¿Cómo ejecutar aplicaciones de 32 bits en Ubuntu de 64 bits?

106

Instalé Ubuntu 14.04 y el SDK de desarrollo de Android actual, que contiene ejecutables de 32 bits. Descubrí que no puedo ejecutar esos binarios de 32 bits. Intentar iniciarlos desde bash me da un error:

$ ./adb
bash: ./adb: No such file or directory

Está allí, sin embargo:

$ ls -al ./adb
-rwxrwxrwx 1 thomas thomas 1231255 Jan 17 13:31 ./adb
$ file ./adb
./adb: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped. Same symptom for all the other 32-bit tools in the Android SDK. 

En el pasado, uno podía simplemente instalar bibliotecas de 32 bits en Ubuntu de 64 bits para obtener soporte de 32 bits, pero parece que ya no funciona.

¿Cómo ejecuto aplicaciones de 32 bits en Ubuntu 14.04 de 64 bits?

    
pregunta Thomas Stuefe 24.04.2014 - 09:29

4 respuestas

160

Para ejecutar un archivo ejecutable de 32 bits en un sistema Ubuntu de arquitectura múltiple de 64 bits, debe agregar la arquitectura i386 e instalar los tres paquetes de biblioteca libc6:i386 , libncurses5:i386 y libstdc++6:i386 :

sudo dpkg --add-architecture i386

O si está utilizando Ubuntu 12.04 LTS (Precise Pangolin) o más abajo, use esto:

echo "foreign-architecture i386" > /etc/dpkg/dpkg.cfg.d/multiarch

Entonces:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Si falla, haz también

sudo apt-get install multiarch-support

Después de estos pasos, debería poder ejecutar la aplicación de 32 bits:

./example32bitprogram
    
respondido por el Avinash Raj 24.04.2014 - 09:31
6

"No existe tal archivo o directorio" puede aparecer cuando tiene su archivo binario, pero le faltan algunas bibliotecas. Si instala el paquete build-essential , tendrá el comando ldd disponible. Este comando ldd ./adb | grep not le mostrará qué bibliotecas faltan. Simplemente instale estas bibliotecas en i386 arch con apt. De esta manera: apt-get install libmissing:i386 Tenga cuidado, algunos paquetes con fallas intentarán eliminar las primeras versiones de 64 bits.

    
respondido por el Barafu Albino 24.04.2014 - 10:44
4

Y si quiere usar "adb" hay un paquete para él:

sudo apt-get install android-tools-adb

Y sobre bibliotecas de 32 bits, solo:

sudo apt-add-architecture i386

será suficiente.

    
respondido por el aastefanov 24.04.2014 - 14:29
2

Además de la excelente respuesta de Zanna y Avinash Raj, tuve que instalar gcc-multilib también:

sudo apt-get install gcc-multilib

Posiblemente esto se deba a que quería ejecutar una versión anterior de gcc en 64 bits.

    
respondido por el user2144067 04.09.2017 - 15:52

Lea otras preguntas en las etiquetas