Cómo instalar ia32-libs en Ubuntu 14.04 LTS (Trusty Tahr)


115

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


Verifique la información multiarca para Ubuntu. Puede agregar: i386 al nombre de un paquete para instalar la versión de 32 bits.
TeTeT

1
Tengo exactamente este problema, necesito ia32-libs para ejecutar el cliente vpn de fortinet, funcionó perfectamente en 10.04 LTS y 12.04 LTS. Intenté 'sudo apt-get install ia32-libs: i386' pero no funciona, también instalé los paquetes 'lib32z1 lib32ncurses5 lib32bz2-1.0' pero no funcionan.
javaPhobic

@javaPhobic Decido instalar ubuntu12.04 (32bit). Sobre mi pregunta, tengo algunas respuestas. No son mis llaves, pero pueden ayudarte. 1. Puede intentar limpiar y luego hacer su código nuevamente. 2. Puede intentar instalar ia32-libs enteras, como la respuesta de Mike Tang. 3. se puede tratar de añadir `` -m32` cuando rodeáis su código, por ejemplo: gcc -m32 helloworld.c. Buena suerte.
andycoder

Esto realmente debería estar en Server Fault.
AStopher

2
Estoy votando para cerrar esta pregunta como fuera de tema porque se trata de la ubicación de las bibliotecas para Linux. Si bien se trata tangencialmente de programación, la solución será más una respuesta de configuración de Linux, no una de programación.
BradleyDotNET

Respuestas:


140

Puede probar esto para instalar la biblioteca de 32 bits (no todos en ia32-libs):

sudo  apt-get install program:i386

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:

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

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ón ia32-libs, te recomiendo que quites el ia32-libs-raring.listin /etc/apt/sources.list.dy lo hagas sudo 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


3
E: El paquete 'ia32-libs' no tiene candidato de instalación
ThatAintWorking

2
No pude acceder a archive.ubuntu.com. Muchos no encontrados mientras apt-get update. Así que cambié la fuente del paquete a deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multi verse. Ahora funciona.
Tim Wu

3
El archivo Raring ya no está disponible en el archivo de ubuntu. Cambié el archivo inusual por el archivo preciso. El paquete ia32-libs se instalará ahora.
Martijn Burger

No funciona en 14.04. La solución que me funciona es la respuesta de Aleksei.
joelparkerhenderson

1
la segunda línea es echo "deb old-releases.ubuntu.com/ubuntu raring principal universo restringido multiverso"> /etc/apt/sources.list.d/ia32-libs-raring.list
Vigen

77

Instale la biblioteca múltiple gcc.

sudo apt-get install gcc-multilib

2
Este metapaquete gcc-multilib en 14.04 es el reemplazo directo más cercano para el metapaquete ia32-libs que estaba en 12.04 que he encontrado hasta ahora, pero aún no satisface las dependencias del paquete que están explícitamente configuradas en ia32-libs .
quickthyme

7
No puedo votar esto lo suficiente. Esto y libstdc++6-4.7-dev:i386es necesario para extraer las máquinas virtuales de Internet Explorer de www.modern.ie
Tek

esto todavía funciona en Ubuntu 16.04 (pero no sé qué tan completo es)
Peter

También tuve que:sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Mike Godin

56

La mejor respuesta que he visto es ¿Cómo ejecutar aplicaciones de 32 bits en Ubuntu de 64 bits?

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

2
Fue totalmente un problema con mi adb (repleto de carbono / helio de clockworkmod). Gracias por esa respuesta que fue acertada para mi problema (aunque tal vez no sea un problema de OP ^^). Y de todos modos, esta respuesta me parece la más limpia. No hay que agregar el enlace del repositorio de la versión anterior de ubuntu, lo que creará un gran lío después, estoy seguro ...
Dolanor

1
Esto también funcionó para mí, donde obtuve el inútil (y casi ningún resultado de Google también, así que reza para que esto se indexe) error "al cargar bibliotecas compartidas: libncurses.so.5". ¡Gracias!
Honoki

gran respuesta para Ubuntu 14.04 pero no funciona en 16.04
Peter

29

¡Finalmente lo tengo! Este es mi camino y espero que pueda ayudarte :)

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

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 -m32después gcc, por ejemplo: gcc -m32 -o hello helloworld.c. Una make cleany makeotra 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 .


Probablemente sea obvio para cualquiera que tenga que hacer esto, pero no ponga "/" en la instrucción rm.
keefer

Si, es mi error. Lo he arreglado ahora. Gracias ~ @keefer
andycoder

2
-1: Si bien esto funciona, es una mala práctica. Hay soluciones mucho mejores en esta publicación de AskUbuntu que no requieren la instalación de repositorios antiguos. Este método solo debería ser necesario para paquetes binarios muy antiguos. Pero como tiene el código fuente, este método realmente no es apropiado.
jmiserez

El archivo Raring ya no está disponible en el archivo de ubuntu. Cambié el archivo inusual por el archivo preciso. El paquete ia32-libs se instalará ahora.
Zhenya

-1 para mí también. Te enfrentarás a un montón de problemas con las dependencias provenientes de 2 versiones. Incluso si eliminó las referencias raras después. Totalmente de acuerdo con @jmiserez.
Dolanor

20

Estas bibliotecas alternativas funcionaron para mí:

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

17

Tuve el mismo problema que el anterior y Eclipse sugirió instalar:

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"   

Cuando intenté instalar ia32-libs, Ubuntu me pidió que instalara otros tres paquetes:

$ 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, también tuve que instalar la versión de 32 bits de libstdc ++ 6:

sudo apt-get install lib32stdc++6

Esta parece la solución para mí, ya que el paquete ia32-libs está obsoleto y ¡funciona!
Daniel Souza

Esto lib32z1no tiene precio
zjk

8

Para mi tengo que correr

sudo dpkg --add-architecture i386

antes de ejecutar la respuesta de Mike Tang. De lo contrario, no puedo instalar ia32-libs.


4

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 emplearia32-libs Ubuntu 12.04 de 64 bits.

Citando webupd8.org :

El paquete ia32-libs ya no está disponible en Ubuntu, a partir de Ubuntu 13.10. El paquete fue reemplazado por el soporte multiarch, por lo que ya no lo necesita, pero algunos paquetes de 64 bits (que en realidad son aplicaciones de 32 bits) aún dependen de este paquete y, por lo tanto, no se pueden instalar en Ubuntu 14.04 o 13.10. 64 bits. [...]

La "solución" o más específicamente la forma correcta de instalar estas aplicaciones que dependen de ia32-libs es simplemente instalar el paquete de 32 bits en Ubuntu de 64 bits. Por supuesto, eso instalará bastantes paquetes de 32 bits, pero así es como funciona multiarch.

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.

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

2
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 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).


1

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.


0

Una solución es agregar el paquete Debian correspondiente a su repositorio. Para esto, escriba los siguientes comandos:

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 primera línea escribe al final del sources.listarchivo la forma del paquete. Esto funciona para mi. Deseo que eso te ayude.


deb ftp: / / ftp. nosotros ... etc, funciona, pero no resolvió mi problema (
waza123
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.