Como executar o aplicativo de 32 bits no Ubuntu de 64 bits?

104

Instalei o Ubuntu 14.04 e o SDK de desenvolvimento do Android atual, que contém executáveis de 32 bits. Eu descobri que não posso executar esses binários de 32 bits. Tentando iniciá-los do bash me dá um erro:

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

Está lá:

$ 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. 

Antigamente, era possível instalar bibliotecas de 32 bits no Ubuntu de 64 bits para obter suporte de 32 bits, mas isso parece não funcionar mais.

Como executo aplicativos de 32 bits em um Ubuntu 14.04 de 64 bits?

    
por Thomas Stuefe 24.04.2014 / 09:29

4 respostas

158

Para executar um arquivo executável de 32 bits em um sistema Ubuntu com várias arquiteturas de 64 bits, é necessário adicionar a arquitetura i386 e instalar os três pacotes da biblioteca libc6:i386 , libncurses5:i386 e libstdc++6:i386 :

sudo dpkg --add-architecture i386

Ou se você estiver usando o Ubuntu 12.04 LTS (Precise Pangolin) ou abaixo, use este:

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

Então:

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

Se falhar, faça também

sudo apt-get install multiarch-support

Após essas etapas, você deve conseguir executar o aplicativo de 32 bits:

./example32bitprogram
    
por Avinash Raj 24.04.2014 / 09:31
6

"Nenhum arquivo ou diretório" pode aparecer quando você tiver seu binário, mas falta algumas bibliotecas. Se você instalar build-essential package, você terá o comando ldd disponível. Este comando ldd ./adb | grep not mostrará a você quais bibliotecas estão faltando. Basta instalar essas bibliotecas no i386 arch com o apt. Assim: apt-get install libmissing:i386 Cuidado, alguns pacotes com bugs tentarão eliminar os disparos de versão de 64 bits.

    
por Barafu Albino 24.04.2014 / 10:44
4

E se você quiser usar "adb", há um pacote para ele:

sudo apt-get install android-tools-adb

E sobre bibliotecas de 32 bits - apenas:

sudo apt-add-architecture i386

será o suficiente.

    
por aastefanov 24.04.2014 / 14:29
1

Além da excelente resposta de Zanna e Avinash Raj, eu tive que instalar o gcc-multilib também:

sudo apt-get install gcc-multilib

Possivelmente isso é porque eu queria rodar uma versão antiga do gcc em 64 bits.

    
por user2144067 04.09.2017 / 15:52

Tags