Пытаюсь из под Debian(x64) скомпилировать код для целевой платформы x86:
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libmysqlclient.so when searching for -lmysqlclient /usr/bin/ld: cannot find -lmysqlclient collect2: error: ld returned 1 exit status
На компьютере отсутствуют библиотеки для x86 MariaDBClient(mysqlclient), только для x64, попытки установить для x86 не дали результата - не дает установить пакет из-за архитектуры x64. В связи с чем немного смущен. Как в этих случаях поступают?
UPD
Сейчас у меня проблема такая: у меня настроена multiarch, при установке нужного мне пакета libmariadbclient-dev:i386 мне предлагается удалить libmariadbclient-dev:amd64. Как установить для i386, не удаляя для amd64?
Для установки на одну машину пакетов различных архитектур в debian используется такая штука, как multiarch. Для этого нужно сказать о новой архитектуре dpkg:
dpkg --add-architecture i386
Далее пакеты можно устанавливать из репозитариев как обычно, указав архитектуру через двоеточие:
apt-get update
apt-get install libmariadbclient-dev-compat:i386
Сейчас у меня проблема такая: у меня настроена multiarch, при установке нужного мне пакета libmariadbclient-dev:i386 мне предлагается удалить libmariadbclient-dev:amd64. Как установить для i386, не удаляя для amd64?
Судя по всему, полноценная поддержки сборки с помощью multiarch под другие архитектуры пока нет, за подробностями попыток реализации такого подхода см. MultiarchCross.
В качестве альтернативы можно воспользоваться cross-chroot'ом, где все необходимые пакеты устанавливаются в отдельный префикс, если в двух словах, то последовательность действий примерно следующая:
MY_CHROOT=/path/to/chroot/stretch-i386
debootstrap --arch i386 stretch "$MY_CHROOT"
cp -r my-project "$MY_CHROOT"/
mount -o bind /dev "$MY_CHROOT"/dev
mount -t proc none "$MY_CHROOT"/proc
chroot "$MY_CHROOT"
apt-get update
apt-get install libmariadbclient-dev-compat
cd my-project && make
Сборка персонального компьютера от Artline: умный выбор для современных пользователей