Probleme beim Kompilieren einer 32-Bit-Binärdatei auf einem 64-Bit-Computer

13

Ich versuche, ein AC-Programm als 32-Bit-Binärdatei anstelle von 64-Bit zu kompilieren. Ich habe nur hinzugefügt -m32und einige Fehler erhalten. Ich googelte ein wenig herum und stieß auf einen Hinweis zur Installation von ia32-libs. Das Ausführen apt-get install ia32-libsführte zu einer Benachrichtigung, dass es bereits installiert war und die neueste Version hatte.

Es gibt eine Reihe von Bibliotheken, von denen jede die nächste enthält, bis sie fehlschlägt:

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

Es scheint 32-Bit-Versionen der anderen Includes zu enthalten /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

Was vermisse ich?

Matt
quelle

Antworten:

38

Lekensteyns Antwort widersprach vielen vorhandenen Paketen für mich (auf 64-Bit-Oneiric).

Ich habe stattdessen dies getan, was das libc6-dev-i386Paket hineingezogen hat:

apt-get install gcc-multilib
AB
quelle
7

ia32-libsenthält nur einige Kompatibilitätsbibliotheken, die noch nicht auf Multi Arch migriert wurden. Zum Kompilieren von 32-Bit-Bibliotheken müssen Sie die 32-Bit-Bibliotheken und Entwicklungsdateien für C installieren:

sudo apt-get install libc6-dev:i386

Siehe auch: Bedeutet die Multiarch-Funktion in 11.10 den Tod der Gewalt - Architekturinstallationen?

Lekensteyn
quelle
Die Installation libc6-dev:i386bestand darauf, die gesamte Gnu-Compiler-Suite zu entfernen (was mir einen kleinen Herzinfarkt verursachte), aber nach der Verwendung sudo apt-get install build-essentialfunktionierte alles perfekt.
Matt
Für mich hat es auch nvidia-current deinstalliert ... aber ohne Probleme neu installiert.
Jeff
1
Beachten Sie, dass die von alberge bereitgestellte Option insofern besser erscheint, als sie nicht viele andere Dinge für die Installation der 32-Bit-Bibliotheken entfernt.
Fabio Zadrozny