¿Es posible compilar un proyecto en 32 bits con cmake
y gcc
en un sistema de 64 bits ? Probablemente lo sea, pero ¿cómo lo hago?
Cuando lo intenté de la manera "ignorante", sin establecer ningún parámetro / flags / etc, solo configurar LD_LIBRARY_PATH
para encontrar las bibliotecas vinculadas ~/tools/lib
parece ignorarlo y solo buscar en subdirectorios llamados lib64 .
Respuestas:
fuente
-m32
alCFLAGS
, probablemente mediante la configuraciónCMAKE_REQUIRED_FLAGS
.export
significa ¿A dónde pertenece? Te archivos de cabecera? Elmakefile
? No, no es una respuesta para mí como principiante.cmake
(sin embargo, en su caso, si tiene un Makefile, entonces lo estaría usandomake
).En resumen: use la
-m32
bandera para compilar un binario de 32 bits.Además, asegúrese de tener instaladas las versiones de 32 bits de todas las bibliotecas necesarias (en mi caso, todo lo que necesitaba en Fedora era glibc-devel.i386)
fuente
sudo apt-get install gcc-multilib
En versiones posteriores de CMake, una forma de hacerlo en cada objetivo es:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
No sé cómo hacerlo globalmente.
fuente
cmake -D CMAKE_CXX_FLAGS=-m32 . && make
Para C ++, podría hacer:
Esto funciona con cmake.
fuente
Una forma es configurar un entorno chroot. Debian tiene varias herramientas para eso, por ejemplo debootstrap
fuente
Para cualquier aplicación compleja, sugiero usar un contenedor lxc . Los contenedores lxc son "algo en el medio entre un chroot con esteroides y una máquina virtual completa".
Por ejemplo, aquí hay una manera de construir wine de 32 bits usando lxc en un sistema Ubuntu Trusty:
Aquí está la página wiki sobre cómo construir vino de 32 bits en un host de 64 bits usando lxc .
fuente
atom
editor de texto para máquina de 32 bits en 64 bits?