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?

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

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?


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.