Я использую 64-битную систему, но хочу набор из 32-битных двоичных файлов. Какие параметры следует передать конфигуратору script для создания файла конфигурации 32bit/x86?
Создайте 32-разрядную версию на 64-битной Linux с помощью automake configure script?
Ответ 1
Передача следующего аргумента для настройки script позволила мне создать 32-битную библиотеку на 64-битной Linux
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Ответ 2
Ответ Джека не завершен.
Вам нужна поддержка компилятора /libc для 32-разрядной компиляции. В некоторых дистрибутивах, таких как Ubuntu, вам нужно установить пакеты gcc-multilib
и/или g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
Затем вы можете вызвать configure, как вы сказали, указать 32-битный хост и передать 32-битные флаговые флаговые компиляции:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Если у вас нет установленного multilib, вы получите сообщение об ошибке, например configure: error: C compiler cannot create executables
при передаче флага -m32
.
Ответ 3
Я добился большего успеха, установив вместо этого собственный компилятор. Таким образом, все тесты configure, даже те, которые используют пользовательские CFLAGS, работали правильно:
./configure CC="gcc -m32" CXX="g++ -m32"
Вам все еще нужны 32-битные версии всех библиотек, которые использует приложение, поэтому любые ошибки в отношении недостающих библиотек относятся к 32-разрядным.
Ответ 4
Предполагая gcc/g++:
CPPFLAGS=-m32 ./configure ...
Ответ 5
Альтернативный способ описанных выше действий был бы (если есть) использовать выделенный компилятор x86. Тогда строка конфигурации будет выглядеть так (я назвал x86-инструменты после шаблона "<toolname> -x86" ):
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure