Problemas para compilar un binario de 32 bits en una máquina de 64 bits

13

Estoy tratando de compilar un programa de CA como un binario de 32 bits en lugar de 64 bits. Comencé simplemente agregando -m32y obtuve algunos errores. Buscando en Google un poco, encontré una nota para instalar ia32-libs. La ejecución apt-get install ia32-libsdio como resultado una notificación que ya estaba instalada y en la versión más reciente.

Hay una cadena de bibliotecas cada una incluyendo la siguiente hasta que falla:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

Parece incluir versiones de 32 bits de la otra incluye /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

¿Qué me estoy perdiendo?

Mate
fuente

Respuestas:

39

La respuesta de Lekensteyn entró en conflicto con muchos paquetes existentes para mí (en oneiric de 64 bits).

En cambio, hice esto, que incluí el libc6-dev-i386paquete:

apt-get install gcc-multilib
AB
fuente
7

ia32-libssolo contiene algunas bibliotecas de compatibilidad que aún no se han migrado a Multi Arch. Para compilar bibliotecas de 32 bits, debe instalar las bibliotecas de 32 bits y los archivos de desarrollo para C:

sudo apt-get install libc6-dev:i386

Ver también: ¿La característica multiarch en 11.10 significa la muerte de la fuerza: la arquitectura se instala?

Lekensteyn
fuente
La instalación libc6-dev:i386insistió en eliminar todo el conjunto de compiladores de GNU (lo que me dio un pequeño ataque al corazón), pero después de usarlo sudo apt-get install build-essentialtodo funcionó perfectamente.
Matt
Para mí, también desinstaló nvidia-current ... aunque reinstalado sin problemas.
Jeff
1
Tenga en cuenta que la opción dada por alberge parece mejor ya que no eliminará toneladas de otras cosas para instalar las bibliotecas de 32 bits.
Fabio Zadrozny