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?¿Construye 32 bits en Linux de 64 bits utilizando un script configure de automake?
Respuesta
Pasando el siguiente argumento para configurar la escritura me permitió construir la biblioteca de 32 bits para Linux de 64 bits
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
No funciona para mí :(Por favor, ayúdenme en http://stackoverflow.com/questions/13780319/cant-build-32bit-wine-on-64bit-linux – m93a
No funcionó para mí al intentar construir una biblioteca. Me dio el mensaje 'configure: error: el compilador C++ no puede crear ejecutables' –
Esta respuesta es incompleta, por eso a veces puede obtener el error" el compilador no puede crear ejecutables. "Consulte mi respuesta en este mismo hilo – volpato
gcc Suponiendo/g ++:
CPPFLAGS=-m32 ./configure ...
Gracias por la respuesta. El script de configuración aún establece el tipo de sistema de compilación y el tipo de sistema de host en x86_64-unknown-linux-gnu. ¿Sabes cómo anular estos? –
respuesta de Jack es incompleta.
Necesita compatibilidad con el compilador/libc para la compilación de 32 bits. En algunas distribuciones como Ubuntu, lo que hay que hacer es instalar los paquetes gcc-multilib
y/o g++-multilib
:
sudo apt-get install gcc-multilib g++-multilib
A continuación, puede llamar a configurar como usted ha dicho, specifyiong una serie de 32 bits y pasando banderas de compilación de 32 bits:
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
Si todavía no ha instalado multilib, recibirá un error como configure: error: C compiler cannot create executables
cuando pasa la bandera -m32
.
Algunos programas compilan 32 bits en amd64 de forma predeterminada (por ejemplo, wine), posiblemente además de los de 64 bits, y deberían poder encontrar multilib si están instalados. No parece ser el caso de OP. Además, Jack tenía razón sobre una cosa: debe ser '--build', not' --host'. '--host' se debe usar solo si está compilando un compilador. Todavía funciona porque hay muchas personas que no lo hacen RTFM y escribir scripts que usan '--host' en lugar de' --build', y las personas autotools se han roto Ya basta de cosas. –
los paquetes * -multilib ya no existen en Debian estable. – Braiam
Tuve un mejor éxito estableciendo un compilador personalizado en su lugar. De esta manera todas las pruebas de configure, incluso los que utilizan CFLAGS personalizados, funcionó correctamente:
./configure CC="gcc -m32" CXX="g++ -m32"
usted todavía tiene versiones de 32 bits de todas las bibliotecas utilizadas por la aplicación, por supuesto, por lo que cualquier error de alrededor bibliotecas que faltan están refiriendo a los de 32 bits.
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 entonces como esto (I nombró a los 86-herramientas según el modelo "<nombreHerramienta> -x86"):
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure
- 1. QtCreator en Linux: 32 bits frente a 64 bits
- 2. 64 bits por división de 32 bits
- 3. Compilación de 32 bits con llvm-gcc de 64 bits
- 4. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 5. Ejecute AnyCPU como 32 bits en sistemas de 64 bits
- 6. ¿Cómo ejecutar una JVM de 32 bits en un Linux de 64 bits?
- 7. Utilizando una DLL de 32 bits en un proceso de 64 bits a través de COM
- 8. Registros de 64 bits en ventanas de 32 bits
- 9. Objeto compartido/bibliotecas mixtas de 32 bits y 64 bits
- 10. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 11. gcc: compilar un binario de 64 bits en la plataforma de 32 bits
- 12. espacio de proceso de 32 bits de direcciones en Linux de 64 bits
- 13. Determinación de Windows de 64 bits frente a 32 bits
- 14. ¿Es posible detectar 32 bits frente a 64 bits en un script bash?
- 15. Cómo verificar el kernel de 32 bits/64 bits para Linux
- 16. Agregar números de 64 bits con aritmética de 32 bits
- 17. No se pueden ejecutar aplicaciones de 32 bits en Linux de 64 bits
- 18. Compatibilidad con Java de 32 bits frente a 64 bits
- 19. Utilizando un dll específico de 32 bits o 64 bits, dependiendo del bitness del proceso
- 20. División de 64/32 bits en un procesador con división de 32/16 bits
- 21. Mezcla de 32 bits y 64 bits P/Invoca
- 22. MapViewOfFile compartido entre procesos de 32 bits y 64 bits
- 23. Wendy ASP.NET AJAX Error/32 bits a 64 bits
- 24. ¿Ventajas/inconvenientes de ejecutar JVM de 64 bits en un servidor Linux de 64 bits?
- 25. Puerto 32 bits Controlador de Windows a 64 bits Windows
- 26. conversión de aplicación .NET 32 bits a 64 bits
- 27. ¿iPhone OS es de 64 bits o 32 bits?
- 28. Eclipse 32 bits ejecutándose en 64 bits JVM
- 29. Linux de 64 bits, Lenguaje ensamblador, ¿Problemas?
- 30. Interoperabilidad de 32 y 64 bits en Windows de 64 bits
más uno. Estoy intentando construir Git para Solaris. 'uname -m' devuelve' i86pc'. Todas menos una de las 10 bibliotecas dependientes detectaron erróneamente la plataforma. Solo OpenSSL lo identificó correctamente como x86_64. – jww