So installieren Sie ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)


115

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-libsals 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?


Überprüfen Sie die Multiarch-Informationen für Ubuntu. Sie können: i386 an einen Paketnamen anhängen, um die 32-Bit-Version davon zu installieren.
TeTeT

1
Ich habe genau dieses Problem, ich brauche die ia32-libs für den Fortinet VPN-Client, es funktionierte perfekt unter 10.04 LTS und 12.04 LTS. Ich habe 'sudo apt-get install ia32-libs: i386' ausprobiert, aber es funktioniert nicht. Ich habe auch die Pakete 'lib32z1 lib32ncurses5 lib32bz2-1.0' installiert, aber sie funktionieren nicht.
JavaPhobic

@javaPhobic Ich beschließe, ubuntu12.04 (32bit) zu installieren. Zu meiner Frage habe ich einige Antworten. Sie sind nicht meine Schlüssel, können Ihnen aber helfen. 1. Sie können versuchen, sauber zu machen, und dann Ihren Code erneut erstellen. 2. Sie können versuchen, ganze ia32-libs zu installieren, genau wie Mike Tangs Antwort. 3. Sie können versuchen, `` -m32` hinzuzufügen, wenn Sie Ihren Code erfassen, zum Beispiel : gcc -m32 helloworld.c. Viel Glück.
Andycoder

Dies sollte wirklich auf Serverfehler sein.
AStopher

2
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da es um den Speicherort von Bibliotheken für Linux geht. Während es tangential um das Programmieren geht, wird die Lösung eher eine Linux-Konfigurationsantwort sein, keine Programmierantwort.
BradleyDotNET

Antworten:


140

Sie können dies versuchen, um die 32-Bit-Bibliothek zu installieren (nicht alle in ia32-libs):

sudo  apt-get install program:i386

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:

sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs

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 Installation ia32-libsempfehle ich Ihnen, das ia32-libs-raring.listIn zu entfernen /etc/apt/sources.list.dund dies zu tun sudo 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


3
E: Paket 'ia32-libs' hat keinen Installationskandidaten
ThatAintWorking

2
Ich konnte nicht auf archive.ubuntu.com zugreifen. Viele nicht gefunden, während apt-get update. Also habe ich die Paketquelle auf geändert deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. Jetzt gehts.
Tim Wu

3
Seltenes Archiv ist im Ubuntu-Archiv nicht mehr verfügbar. Ich habe das seltene Archiv gegen das genaue Archiv ausgetauscht. Das Paket ia32-libs wird jetzt installiert.
Martijn Burger

Funktioniert nicht am 14.04. Die Lösung, die für mich funktioniert, ist Alekseis Antwort.
Joelparkerhenderson

1
Die zweite Zeile lautet echo "deb old-releases.ubuntu.com/ubuntu raring Hauptuniversum mit eingeschränktem Universum"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

Installieren Sie die gcc multiple library.

sudo apt-get install gcc-multilib

2
Dieses gcc-multilib-Metapaket in 14.04 ist der nächstgelegene Ersatz für das ia32-libs-Metapaket in 12.04, auf das ich bisher gestoßen bin, erfüllt jedoch immer noch nicht die Paketabhängigkeiten, die explizit auf ia32-libs festgelegt sind .
Quickthyme

7
Ich kann das nicht genug bewerten. Dies und libstdc++6-4.7-dev:i386ist erforderlich, um die virtuellen Internet Explorer-Maschinen aus www.modern.ie
Tek

Dies funktioniert immer noch unter Ubuntu 16.04 (aber ich weiß nicht, wie vollständig es ist)
Peter

Ich musste auch:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin

56

Die beste Antwort, die ich je gesehen habe, ist, wie man 32-Bit-Anwendungen unter Ubuntu 64-Bit ausführt.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo ./adb

2
Es war total ein Problem mit meinem AdB (vollgepackt mit Clockworkmod Carbon / Helium). Vielen Dank für die Antwort, die für mein Problem genau richtig war (vielleicht aber kein OP-Problem ^^). Und überhaupt, diese Antwort scheint mir die sauberere zu sein. Kein Hinzufügen eines früheren Links zur vorherigen Ubuntu-Version, was später zu einem großen Durcheinander führen wird, da bin ich mir sicher ...
Dolanor

1
Dies hat auch den Trick für mich getan, bei dem ich den nicht hilfreichen (und kaum Google-Ergebnisse, also betet, dass dies indiziert wird) Fehler "Fehler beim Laden gemeinsam genutzter Bibliotheken: libncurses.so.5" erhalten habe. Vielen Dank!
Honoki

tolle Antwort für Ubuntu 14.04, funktioniert aber nicht am 16.04
Peter

29

Ich habe es endlich verstanden! Hier ist mein Weg und ich hoffe es kann dir helfen :)

sudo apt-get install libc6:i386
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /etc/apt/sources.list.d/ia32-libs-raring.list
apt-get update
exit
sudo apt-get install gcc-multilib

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 , -m32nach gcc, zum Beispiel: gcc -m32 -o hello helloworld.c. Einfach make cleanund makewieder. 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 .


Es ist wahrscheinlich für jeden offensichtlich, der dies tatsächlich tun muss, aber setzen Sie das "/" nicht in die rm-Anweisung.
Keefer

Ja, das ist mein Fehler. Ich habe es jetzt behoben. Vielen Dank ~ @keefer
andycoder

2
-1: Während dies funktioniert, ist es wirklich eine schlechte Praxis. In diesem AskUbuntu-Beitrag gibt es viel bessere Lösungen , für die keine alten Repositorys installiert werden müssen. Diese Methode sollte nur für sehr alte Binärpakete benötigt werden. Da Sie jedoch den Quellcode haben, ist diese Methode wirklich nicht geeignet.
Jmiserez

Seltenes Archiv ist im Ubuntu-Archiv nicht mehr verfügbar. Ich habe das seltene Archiv gegen das genaue Archiv ausgetauscht. Das Paket ia32-libs wird jetzt installiert.
Zhenya

-1 auch für mich. Sie werden eine Menge Probleme mit Abhängigkeiten haben, die aus 2 Versionen stammen. Auch wenn Sie die seltenen Referenzen danach entfernt haben. Stimme voll und ganz @jmiserez zu.
Dolanor

20

Diese alternativen Bibliotheken haben für mich funktioniert:

sudo apt-get update
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

17

Ich hatte das gleiche Problem wie oben und Eclipse schlug vor, Folgendes zu installieren:

Hint: On 64-bit systems, make sure the 32-bit libraries are installed:   
   "sudo apt-get install ia32-libs"    
or on some systems,  
   "sudo apt-get install lib32z1"   

Als ich versuchte, ia32-libs zu installieren, forderte Ubuntu drei weitere Pakete auf:

$ sudo apt-get install ia32-libs  
Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
Package ia32-libs is not available, but is referred to by another package.  
This may mean that the package is missing, has been obsoleted, or  
is only available from another source  
However the following packages replace it:  
  lib32z1 lib32ncurses5 lib32bz2-1.0  

E: Package 'ia32-libs' has no installation candidate  
$   
$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0    

Mit Android Studio und Intellij musste ich auch die 32-Bit-Version von libstdc ++ 6 installieren:

sudo apt-get install lib32stdc++6

Dies scheint die Lösung für mich zu sein, da das Paket ia32-libs veraltet ist und funktioniert!
Daniel Souza

Dies lib32z1ist von unschätzbarem
Wert

8

Für mich muss ich rennen

sudo dpkg --add-architecture i386

bevor Mike Tangs Antwort ausgeführt wird. Andernfalls kann ich ia32-libs nicht installieren.


4

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-libsunter 64-Bit-Ubuntu 12.04.

Zitieren von webupd8.org :

Das ia32-libs-Paket ist in Ubuntu ab Ubuntu 13.10 nicht mehr verfügbar. Das Paket wurde von der Multiarch-Unterstützung abgelöst, sodass Sie es nicht mehr benötigen. Einige 64-Bit-Pakete (die eigentlich 32-Bit-Anwendungen sind) hängen jedoch immer noch von diesem Paket ab. Aus diesem Grund können sie nicht in Ubuntu 14.04 oder 13.10 installiert werden. 64bit. [...]

Das "Update" oder genauer gesagt die richtige Art der Installation dieser Apps, die von ia32-libs abhängen, besteht darin, einfach das 32-Bit-Paket unter Ubuntu 64-Bit zu installieren. Das wird natürlich einige 32-Bit-Pakete installieren, aber so funktioniert Multiarch.

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.

sudo dpkg --add-architecture i386 # only needed once
sudo apt-get update
sudo apt-get install libfontconfig1:i386 libx11-6:i386 libxrender1:i386 libxext6:i386 libgl1-mesa-glx:i386 libglu1-mesa:i386 libglib2.0-0:i386 libsm6:i386

2
sudo -i
cd /etc/apt/sources.list.d
echo "deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse" >ia32-libs-raring.list
apt-get update
apt-get install ia32-libs
rm /etc/apt/sources.list.d/ia32-libs-raring.list
apt-get update
exit

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 .


1

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


0

Eine Lösung besteht darin, das entsprechende Debian- Paket zu Ihrem Repository hinzuzufügen . Geben Sie dazu die folgenden Befehle ein:

echo "deb ftp.us.debian.org/debian wheezy main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install ia32-libs-i386

Die erste Zeile schreibt am Ende der sources.listDatei das Paket. Das funktioniert bei mir. Ich wünschte, das hilft dir.


deb ftp: // ftp. uns .. etc, es funktioniert, hat aber mein Problem nicht gelöst (
waza123
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.