Come installare ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)

Ho installato Ubuntu 14.04 (Trusty Tahr) ieri. Tutto sembra OK. Ma quando ho provato a compilare un codice C, ho riscontrato il seguente errore. L’errore sembra essere dovuto al sistema operativo privo del supporto dell’architettura a 32 bit. L’output dell’errore è il seguente:

/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 

Ho usato apt-get install ia32-libs mentre stavo usando Ubuntu 12.04 (Precise Pangolin). Ma quello che so è che Ubuntu ha rimosso le librerie ia32 da Ubuntu 13.10 (Saucy Salamander). Come posso risolvere questo problema?

Puoi provare a installare la libreria a 32 bit (non tutti in ia32-libs):

 sudo apt-get install program:i386 

sudo dpkg --add-architecture i386 potrebbe essere richiesto (se non l’hai mai eseguito).


O se invece vuoi installare l’intero ia32-lib, prova il seguente ordine:

 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: In questo modo, puoi installare ia32-libs . Tuttavia, aggiungiamo la fonte di 13.04, quindi, potrebbe esserci qualche problema sconosciuto. Dopo aver installato ia32-libs , ti consiglio di rimuovere ia32-libs-raring.list in /etc/apt/sources.list.d , e fare sudo apt-get update .


Se vuoi correggere la dipendenza di Android SDK, puoi provare questo esempio:

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

Installa gcc più librerie.

 sudo apt-get install gcc-multilib 

La migliore risposta che abbia mai visto è come eseguire applicazioni a 32 bit su 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 

Finalmente l’ho avuto! Ecco la mia strada, e spero che possa aiutarti 🙂

 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 

Non conosco il motivo per cui ho bisogno di installarli, ma funziona sul mio computer. Quando finisci di installare questi pacchetti, è tempo di provare. Oh sì, ho bisogno di dirtelo. Questa volta quando si desidera compilare il codice, è necessario aggiungere -m32 dopo gcc , ad esempio: gcc -m32 -o hello helloworld.c . Basta make clean e make . Buona fortuna amici.

PS: il mio ambiente è: Ubuntu 14.04 64-bit (Trusty Tahr) e GCC versione 4.8.4. Ho scritto la soluzione nel mio blog, ma è in cinese 🙂 – Come eseguire il compasso del programma 32 bit con ubuntu14.04 .

Queste librerie alternative hanno funzionato per me:

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

Ho avuto lo stesso problema di cui sopra e Eclipse ha suggerito di installare:

 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" 

Quando ho provato ad installare ia32-libs, Ubuntu ha richiesto di installare altri tre pacchetti:

 $ 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 

Con Android Studio e intellij, ho anche dovuto installare la versione a 32 bit di libstdc ++ 6:

 sudo apt-get install lib32stdc++6 

Per me, devo correre

 sudo dpkg --add-architecture i386 

prima di eseguire la risposta di Mike Tang. Altrimenti, non posso installare ia32-libs.

Basta installare la versione a 32 bit del programma, invece della versione a 64 bit.

Questo è molto più sicuro dell’installazione di pacchetti non destinati alla distribuzione in questione.

Ho ricevuto questo suggerimento dalle istruzioni di installazione di Google Earth per Ubuntu 14.04 . Google Earth utilizzava ia32-libs sotto Ubuntu 12.04 a 64 bit.

Citando webupd8.org :

Il pacchetto ia32-libs non è più disponibile in Ubuntu, a partire da Ubuntu 13.10. Il pacchetto è stato sostituito dal supporto multiarch in modo da non averne più bisogno, ma alcuni pacchetti a 64 bit (che sono in realtà applicazioni a 32 bit) dipendono ancora da questo pacchetto e per questo motivo non possono essere installati in Ubuntu 14.04 o 13.10, 64bit. […]

La “correzione” o più specificamente il modo corretto di installare queste app che dipendono da ia32-libs è semplicemente installare il pacchetto a 32 bit su Ubuntu 64 bit. Ovviamente, questo installerà parecchi pacchetti a 32 bit, ma è così che funziona il multiarch.

Il problema con alcuni programmi (come Google Earth) è che il pacchetto a 32 bit non supporta il multiarch. Di conseguenza, alcune dipendenze a 32 bit devono essere installate manualmente per far funzionare la versione a 32 bit del programma su Ubuntu 64-bit.

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

Se sei in Cina, puoi modificare “raring” in “preciso” (per Ubuntu 13.04 (Raring Ringtail) e Ubuntu 12.04 LTS (Precise Pangolin) , rispettivamente). Ho installato Beyond Compare su Ubuntu 14.04 (Trusty Tahr).

Il problema è che in molti casi i pacchetti sono già multiarch quindi il pacchetto i386 non è disponibile, ma altri pacchetti dipendono ancora solo dal pacchetto i386. Questo è un problema nel repository e i gestori dei repository dovrebbero correggerlo

Una soluzione è aggiungere il modo di pacchetto Debian corrispondente al tuo repository. Per questo, digita i seguenti comandi:

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

La prima riga scrive alla fine del file sources.list nel modo a pacchetto. Questo funziona per me. Vorrei che ti aiuti.