it-swarm.com.de

Wie installiere ich ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)

Ich habe gestern Ubuntu 14.04 (Trusty Tahr) installiert. Alles scheint in Ordnung zu sein. Beim Kompilieren von C-Code tritt jedoch der folgende Fehler auf. Der Fehler scheint darauf zurückzuführen zu sein, dass das Betriebssystem die 32-Bit-Architektur nicht unterstützt. Die Fehlerausgabe ist 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 habe apt-get install ia32-libs verwendet, als ich Ubuntu 12.04 (Precise Pangolin) verwendet habe. Was ich aber weiß ist, dass Ubuntu die ia32-libs seit Ubuntu 13.10 (Saucy Salamander) entfernt hat. Wie kann ich dieses Problem beheben?

114
andycoder

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 ist möglicherweise erforderlich (falls Sie das noch nie ausgeführt haben).


Oder wenn Sie stattdessen die gesamte ia32-lib installieren möchten, versuchen Sie Folgendes:

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 ia32-libs installieren. Wir fügen jedoch stattdessen den Quellcode von 13.04 hinzu, sodass möglicherweise ein unbekanntes Problem vorliegt. Nach der Installation von ia32-libs empfehle ich, ia32-libs-raring.list in /etc/apt/sources.list.d zu entfernen und Sudo apt-get update auszuführen.


Wenn Sie die Abhängigkeit von Android SDK beheben möchten, können Sie Folgendes versuchen:

Sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

140
MikeCoder

Installieren Sie die gcc multiple library.

Sudo apt-get install gcc-multilib
77
Nelson Chen

Die beste Antwort, die ich je gesehen habe, ist Wie starte ich 32-Bit-Anwendungen unter Ubuntu 64-Bit?

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

Ich habe es endlich geschafft! 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 mit der Installation dieser Pakete fertig sind, ist es Zeit, es zu versuchen. Oh ja, ich muss es dir sagen. Wenn Sie diesmal Ihren Code kompilieren möchten, sollten Sie -m32 nach gcc einfügen, zum Beispiel: gcc -m32 -o hello helloworld.c. Nur noch einmal make clean und make. 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 in Chinesisch :-) - Wie man ein 32-Bit-Programm unter Ubuntu 14.04 kompassiert .

29
andycoder

Diese alternativen Bibliotheken haben für mich funktioniert:

Sudo apt-get update
Sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
20
wisbucky

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
17
Bob

Für mich muss ich rennen

Sudo dpkg --add-architecture i386

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

8
fkpwolf

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 der Google Earth-Installationsanleitung für Ubuntu 14.04 . Google Earth verwendete ia32-libs unter 64-Bit-Ubuntu 12.04.

Zitieren webupd8.org :

Das Paket ia32-libs ist in Ubuntu ab Ubuntu 13.10 nicht mehr verfügbar. Das Paket wurde durch die Multiarch-Unterstützung abgelöst, sodass Sie es nicht mehr benötigen. Einige 64-Bit-Pakete (bei denen es sich tatsächlich um 32-Bit-Anwendungen handelt) sind jedoch weiterhin von diesem Paket abhängig. 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, diese von ia32-libs abhängigen Apps zu installieren, besteht darin, einfach das 32-Bit-Paket auf Ubuntu 64-Bit zu installieren. Natürlich werden dadurch einige 32-Bit-Pakete installiert, 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
4
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 "exact" ändern (für buntu 13.04 (Raring Ringtail) und buntu 12.04 LTS (Precise Pangolin) ). Ich habe Beyond Compare auf Ubuntu 14.04 (Trusty Tahr) installiert.

2
user3999490

Das Problem ist, dass die Pakete in vielen Fällen bereits Multiarch sind, sodass das i386-Paket nicht verfügbar ist, andere Pakete jedoch nur vom i386-Paket abhängen. Dies ist ein Problem im Repository, und die Manager der Repos sollten es beheben

1

Eine Lösung ist, die entsprechende Debian Paketmethode 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.list -Datei den Paketweg. Das funktioniert bei mir. Ich wünschte, das hilft dir.

0
bbruno5