Ich habe gestern Ubuntu 14.04 (Trusty Tahr) installiert. Alles scheint in Ordnung zu sein. Beim Versuch, C-Code zu kompilieren, tritt jedoch der folgende Fehler auf. Der Fehler scheint auf das Betriebssystem zurückzuführen zu sein, dem die 32-Bit-Architekturunterstützung fehlt. Die Fehlerausgabe lautet wie folgt:
/usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_cfg_common.o)' is incompatible with i386:x86-64 output
Ich war es gewohnt, apt-get install ia32-libs
als ich Ubuntu 12.04 (Precise Pangolin) verwendete. Aber was ich weiß ist, dass Ubuntu die ia32-libs seit Ubuntu 13.10 (Saucy Salamander) entfernt hat. Wie kann ich dieses Problem beheben?
gcc -m32 helloworld.c
. Viel Glück.Antworten:
Sie können dies versuchen, um die 32-Bit-Bibliothek zu installieren (nicht alle in ia32-libs):
sudo dpkg --add-architecture i386
kann erforderlich sein (falls Sie das noch nie ausgeführt haben).Oder wenn Sie stattdessen die gesamte ia32-lib installieren möchten, versuchen Sie die folgende Reihenfolge:
PS: Auf diese Weise können Sie installieren
ia32-libs
. Wir fügen jedoch stattdessen die Quelle von 13.04 hinzu, sodass möglicherweise ein unbekanntes Problem vorliegt. Nach der Installationia32-libs
empfehle ich Ihnen, dasia32-libs-raring.list
In zu entfernen/etc/apt/sources.list.d
und dies zu tunsudo apt-get update
.Wenn Sie die Abhängigkeit von Android SDK beheben möchten, können Sie Folgendes ausprobieren:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
quelle
apt-get update
. Also habe ich die Paketquelle auf geändertdeb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
. Jetzt gehts.Installieren Sie die gcc multiple library.
quelle
libstdc++6-4.7-dev:i386
ist erforderlich, um die virtuellen Internet Explorer-Maschinen aus www.modern.iesudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Die beste Antwort, die ich je gesehen habe, ist, wie man 32-Bit-Anwendungen unter Ubuntu 64-Bit ausführt.
quelle
Ich habe es endlich verstanden! Hier ist mein Weg und ich hoffe es kann dir helfen :)
Ich weiß nicht, warum ich diese installieren muss, aber es funktioniert auf meinem Computer. Wenn Sie die Installation dieser Pakete abgeschlossen haben, ist es Zeit, es zu versuchen. Oh ja, ich muss es dir sagen. Dieses Mal , wenn Sie Ihren Code kompilieren wollen, sollten Sie hinzufügen ,
-m32
nachgcc
, zum Beispiel:gcc -m32 -o hello helloworld.c
. Einfachmake clean
undmake
wieder. Viel Glück Freunde.PS: Meine Umgebung ist: Ubuntu 14.04 64-Bit (Trusty Tahr) und GCC Version 4.8.4. Ich habe die Lösung in meinem Blog geschrieben, aber sie ist auf Chinesisch :-) - Wie man ein 32-Bit-Programm unter ubuntu14.04 kompassiert .
quelle
Diese alternativen Bibliotheken haben für mich funktioniert:
quelle
Ich hatte das gleiche Problem wie oben und Eclipse schlug vor, Folgendes zu installieren:
Als ich versuchte, ia32-libs zu installieren, forderte Ubuntu drei weitere Pakete auf:
Mit Android Studio und Intellij musste ich auch die 32-Bit-Version von libstdc ++ 6 installieren:
quelle
lib32z1
ist von unschätzbaremFür mich muss ich rennen
bevor Mike Tangs Antwort ausgeführt wird. Andernfalls kann ich ia32-libs nicht installieren.
quelle
Installieren Sie einfach die 32-Bit-Version des Programms. anstelle der 64-Bit-Version.
Dies ist viel sicherer als die Installation von Paketen, die nicht für die jeweilige Distribution vorgesehen sind.
Ich habe diesen Vorschlag aus den Google Earth-Installationsanweisungen für Ubuntu 14.04 erhalten . Google Earth verwendete früher
ia32-libs
unter 64-Bit-Ubuntu 12.04.Zitieren von webupd8.org :
Das Problem bei einigen Programmen (wie Google Earth) ist, dass das 32-Bit-Paket Multiarch nicht unterstützt. Folglich müssen einige 32-Bit-Abhängigkeiten manuell installiert werden, damit die 32-Bit-Version des Programms unter Ubuntu 64-Bit ausgeführt wird.
quelle
Wenn Sie in China sind, können Sie "raring" auf "präzise" ändern (für Ubuntu 13.04 (Raring Ringtail) bzw. Ubuntu 12.04 LTS (Precise Pangolin) ). Ich habe Beyond Compare unter Ubuntu 14.04 (Trusty Tahr) installiert .
quelle
Das Problem ist, dass die Pakete in vielen Fällen bereits Multiarch sind, sodass das i386-Paket nicht verfügbar ist, andere Pakete jedoch weiterhin nur vom i386-Paket abhängen. Dies ist ein Problem im Repository, und die Manager der Repos sollten es beheben
quelle
Eine Lösung besteht darin, das entsprechende Debian- Paket zu Ihrem Repository hinzuzufügen . Geben Sie dazu die folgenden Befehle ein:
Die erste Zeile schreibt am Ende der
sources.list
Datei das Paket. Das funktioniert bei mir. Ich wünschte, das hilft dir.quelle