autotools - ¿Construye 32 bits en Linux de 64 bits utilizando un script configure de automake?
./configure make make install (5)
La respuesta de Jack está incompleta.
Necesita compatibilidad de compilador / libc para la compilación de 32 bits. En algunas distribuciones como Ubuntu, lo que necesita hacer es instalar paquetes gcc-multilib
y / o g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
Luego puede llamar a configure como dijo, especificando un host de 32 bits y pasando indicadores de compilación de 32 bits:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Si no tiene multilib instalado, obtendrá un error como configure: error: C compiler cannot create executables
al pasar el indicador -m32
.
Estoy usando un sistema de 64 bits, pero quiero un conjunto de binarios de 32 bits. ¿Qué opciones debo pasar a un script de configuración para generar un makefile de 32 bits / x86?
Mejor logré establecer un compilador personalizado en su lugar. De esta forma, todas las pruebas de configuración, incluso las que usan CFLAGS personalizadas, funcionaron correctamente:
./configure CC="gcc -m32" CXX="g++ -m32"
Todavía necesita versiones de 32 bits de todas las bibliotecas que utiliza la aplicación, por supuesto, por lo que cualquier error sobre bibliotecas faltantes se refiere a las de 32 bits.
Pasar el siguiente argumento para configurar el script me permitió construir la biblioteca de 32 bits en Linux de 64 bits
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Suponiendo gcc / g ++:
CPPFLAGS=-m32 ./configure ...
Una forma alternativa a las cosas descritas anteriormente sería (si tiene) usar un compilador x86 dedicado. La línea de configuración sería así (nombré las herramientas x86 después del patrón "<nombre de herramienta> -x86"):
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure