J'ai installé Ubuntu 14.04 (Trusty Tahr) hier. Tout semble OK. Mais lorsque j'ai essayé de compiler du code C, je rencontre l'erreur suivante. L'erreur semble être due au fait que le système d'exploitation ne prend pas en charge 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 apt-get install ia32-libs
quand j'utilisais Ubuntu 12.04 (Precise Pangolin). Mais ce que je sais, c'est qu'Ubuntu a supprimé les ia32-libs depuis Ubuntu 13.10 (Saucy Salamander). Comment puis-je résoudre ce problème?
gcc -m32 helloworld.c
. Bonne chance.Réponses:
Vous pouvez essayer ceci pour installer la bibliothèque 32 bits (pas toutes dans ia32-libs):
sudo dpkg --add-architecture i386
peut être nécessaire (si vous ne l'avez jamais exécuté).Ou si vous souhaitez installer la totalité de ia32-lib à la place, essayez l'ordre suivant:
PS: De cette façon, vous pouvez installer
ia32-libs
. Cependant, nous ajoutons la source de 13.04 à la place, il peut donc y avoir un problème inconnu. Après l'installationia32-libs
, je vous recommande de supprimer leia32-libs-raring.list
in/etc/apt/sources.list.d
, et de le fairesudo apt-get update
.Si vous souhaitez corriger la dépendance du SDK Android, vous pouvez essayer ceci ci-dessous:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
la source
apt-get update
. J'ai donc changé la source du paquet endeb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
. Maintenant ça marche.Installez plusieurs bibliothèques gcc.
la source
libstdc++6-4.7-dev:i386
est nécessaire pour extraire les machines virtuelles Internet Explorer de www.modern.iesudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
La meilleure réponse que j'ai jamais vue est Comment exécuter des applications 32 bits sur Ubuntu 64 bits?
la source
Je l'ai enfin! Voici mon chemin, et j'espère que cela pourra vous aider :)
Je ne sais pas pourquoi je dois les installer, mais cela fonctionne sur mon ordinateur. Lorsque vous avez terminé d'installer ces packages, il est temps d'essayer. Oh oui, j'ai besoin de te le dire. Cette fois , quand vous voulez compiler votre code, vous devez ajouter
-m32
aprèsgcc
, par exemple:gcc -m32 -o hello helloworld.c
. Justemake clean
etmake
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 dans mon blog, mais elle est en chinois :-) - Comment compacter le programme 32 bits sous ubuntu14.04 .
la source
Ces bibliothèques alternatives ont fonctionné pour moi:
la source
J'ai eu le même problème que ci-dessus et Eclipse a suggéré l'installation:
Lorsque j'ai essayé d'installer ia32-libs, Ubuntu m'a demandé d'installer trois autres packages:
Avec Android Studio et intellij, j'ai également dû installer la version 32 bits de libstdc ++ 6:
la source
lib32z1
inestimablePour moi, je dois courir
avant d'exécuter la réponse de Mike Tang. Sinon, je ne peux pas installer ia32-libs.
la source
Installez simplement la version 32 bits du programme au lieu de la version 64 bits.
C'est beaucoup plus sûr que d'installer des packages qui ne sont pas destinés à la distribution actuelle.
J'ai eu cette suggestion dans les instructions d'installation de Google Earth pour Ubuntu 14.04 . Google Earth utilisait
ia32-libs
sous Ubuntu 12.04 64 bits.Citant webupd8.org :
Le problème avec certains programmes (comme 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.
la source
Si vous êtes en Chine, vous pouvez modifier «raring» en «précis» (pour Ubuntu 13.04 (Raring Ringtail) et Ubuntu 12.04 LTS (Precise Pangolin) , respectivement). J'ai installé Beyond Compare sur Ubuntu 14.04 (Trusty Tahr).
la source
Le problème est que dans de nombreux cas, les packages sont déjà multiarchives, donc le package i386 n'est pas disponible, mais les autres packages dépendent toujours du package i386 uniquement. C'est un problème dans le référentiel, et les gestionnaires des dépôts devraient le corriger
la source
Une solution consiste à ajouter la méthode de paquet Debian correspondante à votre référentiel. Pour cela, tapez les commandes ci-dessous:
La première ligne écrit à la fin du
sources.list
fichier la manière du package. Cela fonctionne pour moi. Je souhaite que cela vous aide.la source