web-dev-qa-db-fra.com

Comment installer ia32-libs dans Ubuntu 14.04 LTS (Trusty Tahr)

J'ai installé Ubuntu 14.04 (Trusty Tahr) hier. Tout semble bien. Mais lorsque j'ai essayé de compiler du code C, j'ai rencontré l'erreur suivante. L'erreur semble être due au système d'exploitation dépourvu de la prise en charge de l'architecture 32 bits. La sortie d'erreur est la suivante:

/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

J'avais l'habitude de apt-get install ia32-libs lorsque j'utilisais Ubuntu 12.04 (Precise Pangolin). Mais ce que je sais, c’est que Ubuntu a supprimé les ia32-libs depuis Ubuntu 13.10 (Saucy Salamander). Comment puis-je résoudre ce problème?

114
andycoder

Vous pouvez essayer ceci pour installer la bibliothèque 32 bits (pas tous dans ia32-libs):

Sudo  apt-get install program:i386

Sudo dpkg --add-architecture i386 peut être requis (si vous ne l'avez jamais exécuté).


Ou si vous souhaitez installer l'ensemble de ia32-lib à la place, essayez l'ordre suivant:

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: De cette façon, vous pouvez installer ia32-libs. Cependant, nous ajoutons la source de 13.04 à la place, donc, il peut y avoir un problème inconnu. Après avoir installé ia32-libs, je vous recommande de supprimer le ia32-libs-raring.list dans /etc/apt/sources.list.d et de faire Sudo apt-get update.


Si vous voulez réparer la dépendance de Android SDK, vous pouvez essayer ceci ci-dessous:

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

140
MikeCoder

Installez plusieurs bibliothèques gcc.

Sudo apt-get install gcc-multilib
77
Nelson Chen

La meilleure réponse que j'ai jamais vue est Comment exécuter des applications 32 bits sur Ubuntu 64 bits?

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

Je l'ai enfin! Voici mon chemin et j'espère que cela pourra vous aider :)

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

Je ne connais pas la raison pour laquelle j'ai besoin de les installer, mais cela fonctionne sur mon ordinateur. Quand vous avez fini d'installer ces paquets, il est temps d'essayer. Oh oui, je dois te dire. Cette fois, lorsque vous voulez compiler votre code, vous devez ajouter -m32 après gcc, par exemple: gcc -m32 -o hello helloworld.c. Juste make clean et make encore. Bonne chance les amis.

PS: mon environnement est: Ubuntu 14.04 64 bits (Trusty Tahr) et GCC version 4.8.4. J'ai écrit la solution sur mon blog, mais elle est en chinois :-) - Comment compiler un programme 32 bits sous ubuntu14.04 .

29
andycoder

Ces bibliothèques alternatives ont fonctionné pour moi:

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

J'ai eu le même problème que ci-dessus et Eclipse suggéré l'installation:

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"   

Lorsque j'ai essayé d'installer ia32-libs, Ubuntu a été invité à installer trois autres packages:

$ 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    

Avec Android Studio et intellij, je devais également installer la version 32 bits de libstdc ++ 6:

Sudo apt-get install lib32stdc++6
17
Bob

Pour moi, je dois courir

Sudo dpkg --add-architecture i386

avant d'exécuter la réponse de Mike Tang. Sinon, je ne peux pas installer ia32-libs.

8
fkpwolf

Installez simplement la version 32 bits du programme à la place de la version 64 bits.

Ceci est bien plus sûr que d’installer des paquets qui ne sont pas destinés à la distribution.

J'ai eu cette suggestion du instructions d'installation de Google Earth pour Ubuntu 14.04 . Auparavant, Google Earth utilisait ia32-libs sous Ubuntu 12.04 64 bits.

Citant webupd8.org :

Le paquet ia32-libs n'est plus disponible dans Ubuntu, à partir d'Ubuntu 13.10. Le paquet a été remplacé par le support multiarch donc vous n'en avez plus besoin, mais certains paquets 64 bits (qui sont en fait des applications 32 bits) dépendent toujours de ce paquet et de ce fait, ils ne peuvent pas être installés dans Ubuntu 14.04 ou 13.10. 64 bits. [...]

Le "correctif" ou plus précisément la manière correcte d’installer ces applications qui dépendent de ia32-libs est d’installer simplement le paquet 32 ​​bits sur Ubuntu 64 bits. Bien sûr, cela installera pas mal de paquets 32 bits, mais c'est ainsi que fonctionne multiarch.

Le problème de certains programmes (tels que Google Earth) est que le package 32 bits ne prend pas en charge le multiarch. Par conséquent, certaines dépendances 32 bits doivent être installées manuellement pour que la version 32 bits du programme s'exécute sur Ubuntu 64 bits.

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

Si vous êtes en Chine, vous pouvez modifier "raring" en "precise" (pour buntu 13.04 (Raring Ringtail) et buntu 12.04 LTS (Precise Pangolin) , respectivement. J'ai installé Beyond Compare sur Ubuntu 14.04 (Trusty Tahr).

2
user3999490

Le problème est que, dans de nombreux cas, les packages sont déjà multi-architectures, de sorte que le package i386 n'est pas disponible, mais que d'autres packages dépendent toujours du package i386 uniquement. Ceci est un problème dans le référentiel, et les gestionnaires du dépôt doivent le résoudre.

1
Rand McRanderson

Une solution consiste à ajouter le chemin Debian correspondant à votre référentiel. Pour cela, tapez les commandes ci-dessous:

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 première ligne écrit à la fin du fichier sources.list à la manière du paquet. Cela fonctionne pour moi. Je souhaite que cela vous aide.

0
bbruno5