Est-il possible de compiler un projet en 32 bits avec cmake
et gcc
sur un système 64 bits ? C'est probablement le cas, mais comment faire?
Quand je l'ai essayé de manière "ignorante", sans définir de paramètres / drapeaux / etc, le simple fait LD_LIBRARY_PATH
de trouver les bibliothèques liées ~/tools/lib
semble l'ignorer et de ne regarder que dans les sous-répertoires nommés lib64 .
Réponses:
la source
-m32
auCFLAGS
, probablement en définissantCMAKE_REQUIRED_FLAGS
.export
dire? Où appartient-il? Les fichiers d'en-tête? Lemakefile
? Non, pas du tout une réponse pour moi en tant que débutant.cmake
(mais dans votre cas, si vous avez un Makefile, vous utiliserez à lamake
place).En bref: utilisez l'
-m32
indicateur pour compiler un binaire 32 bits.Assurez-vous également que les versions 32 bits de toutes les bibliothèques requises sont installées (dans mon cas, tout ce dont j'avais besoin sur Fedora était glibc-devel.i386)
la source
sudo apt-get install gcc-multilib
Dans les versions ultérieures de CMake, une façon de le faire sur chaque cible est:
set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")
Je ne connais pas de moyen de le faire à l'échelle mondiale.
la source
cmake -D CMAKE_CXX_FLAGS=-m32 . && make
Pour C ++, vous pouvez faire:
Cela fonctionne avec cmake.
la source
Une façon est de configurer un environnement chroot. Debian a un certain nombre d'outils pour cela, par exemple debootstrap
la source
Pour toute application complexe, je suggère d'utiliser un conteneur lxc . Les conteneurs lxc sont «quelque chose au milieu entre un chroot sur les stéroïdes et une machine virtuelle à part entière».
Par exemple, voici un moyen de créer du vin 32 bits à l'aide de lxc sur un système Ubuntu Trusty:
Voici la page wiki sur la façon de construire du vin 32 bits sur un hôte 64 bits en utilisant lxc .
la source
atom
éditeur de texte pour 32 bits sur une machine 64 bits?