Instalé Ubuntu 14.04 (Trusty Tahr) ayer. Todo parece estar bien. Pero cuando intenté compilar código C, me encontré con el siguiente error. El error parece deberse a que el sistema operativo carece de compatibilidad con la arquitectura de 32 bits. La salida de error es la siguiente:
/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
Solía hacerlo apt-get install ia32-libs
cuando usaba Ubuntu 12.04 (Precise Pangolin). Pero lo que sé es que Ubuntu ha eliminado ia32-libs desde Ubuntu 13.10 (Saucy Salamander). ¿Como puedo solucionar este problema?
gcc -m32 helloworld.c
. Buena suerte.Respuestas:
Puede probar esto para instalar la biblioteca de 32 bits (no todos en ia32-libs):
sudo dpkg --add-architecture i386
puede ser necesario (si nunca lo ha ejecutado).O si desea instalar el ia32-lib completo en su lugar, intente el siguiente orden:
PD: De esta manera, puedes instalar
ia32-libs
. Sin embargo, en su lugar, agregamos la fuente de 13.04, por lo que puede haber algún problema desconocido. Después de la instalaciónia32-libs
, te recomiendo que quites elia32-libs-raring.list
in/etc/apt/sources.list.d
y lo hagassudo apt-get update
.Si desea corregir la dependencia del SDK de Android, puede probar lo siguiente:
sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
fuente
apt-get update
. Así que cambié la fuente del paquete adeb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse
. Ahora funciona.Instale la biblioteca múltiple gcc.
fuente
libstdc++6-4.7-dev:i386
es necesario para extraer las máquinas virtuales de Internet Explorer de www.modern.iesudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
La mejor respuesta que he visto es ¿Cómo ejecutar aplicaciones de 32 bits en Ubuntu de 64 bits?
fuente
¡Finalmente lo tengo! Este es mi camino y espero que pueda ayudarte :)
No sé la razón por la que necesito instalarlos, pero funciona en mi computadora. Cuando termine de instalar estos paquetes, es hora de intentarlo. Oh, sí, necesito decirte. Esta vez, cuando se desea compilar el código, debe agregar
-m32
despuésgcc
, por ejemplo:gcc -m32 -o hello helloworld.c
. Unamake clean
ymake
otra vez. Buena suerte amigos.PD: mi entorno es: Ubuntu 14.04 de 64 bits (Trusty Tahr) y GCC versión 4.8.4. He escrito la solución en mi blog, pero está en chino :-) - Cómo compás un programa de 32 bits en ubuntu14.04 .
fuente
Estas bibliotecas alternativas funcionaron para mí:
fuente
Tuve el mismo problema que el anterior y Eclipse sugirió instalar:
Cuando intenté instalar ia32-libs, Ubuntu me pidió que instalara otros tres paquetes:
Con Android Studio e intellij, también tuve que instalar la versión de 32 bits de libstdc ++ 6:
fuente
lib32z1
no tiene precioPara mi tengo que correr
antes de ejecutar la respuesta de Mike Tang. De lo contrario, no puedo instalar ia32-libs.
fuente
Simplemente instale la versión de 32 bits del programa, lugar de la versión de 64 bits.
Esto es mucho más seguro que instalar paquetes que no están pensados para la distribución en cuestión.
Recibí esta sugerencia de las instrucciones de instalación de Google Earth para Ubuntu 14.04 . Google Earth solía emplear
ia32-libs
Ubuntu 12.04 de 64 bits.Citando webupd8.org :
El problema con algunos programas (como Google Earth) es que el paquete de 32 bits no es compatible con multiarch. En consecuencia, algunas dependencias de 32 bits deben instalarse manualmente para que la versión de 32 bits del programa se ejecute en Ubuntu de 64 bits.
fuente
Si estás en China, puedes modificar "raring" a "preciso" (para Ubuntu 13.04 (Raring Ringtail) y Ubuntu 12.04 LTS (Precise Pangolin) , respectivamente). Instalé Beyond Compare en Ubuntu 14.04 (Trusty Tahr).
fuente
El problema es que en muchos casos los paquetes ya son multiarch, por lo que el paquete i386 no está disponible, pero otros paquetes aún dependen solo del paquete i386. Este es un problema en el repositorio, y los administradores de los repositorios deberían solucionarlo.
fuente
Una solución es agregar el paquete Debian correspondiente a su repositorio. Para esto, escriba los siguientes comandos:
La primera línea escribe al final del
sources.list
archivo la forma del paquete. Esto funciona para mi. Deseo que eso te ayude.fuente