Problème de compilation d'un binaire 32 bits sur une machine 64 bits

13

J'essaie de compiler un programme AC en binaire 32 bits au lieu de 64 bits. J'ai commencé par simplement ajouter -m32et j'ai eu quelques erreurs. Googler un peu Je suis tombé sur une note pour installer ia32-libs. L'exécution a apt-get install ia32-libsdonné lieu à une notification indiquant qu'elle était déjà installée et dans la dernière version.

Il y a une chaîne de bibliothèques chacune incluant la suivante jusqu'à ce qu'elle échoue:

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

Il semble inclure des versions 32 bits de l'autre comprend /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

Qu'est-ce que je rate?

Mat
la source

Réponses:

39

La réponse de Lekensteyn était en conflit avec de nombreux packages existants pour moi (sur Oneiric 64 bits).

J'ai plutôt fait cela, ce qui a tiré dans le libc6-dev-i386paquet:

apt-get install gcc-multilib
UN B
la source
7

ia32-libscontient juste quelques bibliothèques de compatibilité qui n'ont pas encore été migrées vers Multi Arch. Pour compiler des bibliothèques 32 bits, vous devez installer les bibliothèques 32 bits et les fichiers de développement pour C:

sudo apt-get install libc6-dev:i386

Voir aussi: La fonctionnalité multiarch en 11.10 signifie-t-elle la mort de la force - l'architecture s'installe?

Lekensteyn
la source
L'installation a libc6-dev:i386insisté sur la suppression de la suite complète du compilateur gnu (ce qui m'a donné une petite crise cardiaque) mais après avoir sudo apt-get install build-essentialtout utilisé, cela a parfaitement fonctionné.
Matt
Pour moi, il a également désinstallé nvidia-current ... réinstallé sans problème cependant.
Jeff
1
Notez que l'option donnée par alberge semble meilleure en ce qu'elle ne supprimera pas des tonnes d'autres choses pour l'installation des bibliothèques 32 bits.
Fabio Zadrozny