Instalei o Ubuntu 14.04 e o atual SDK de desenvolvimento Android, que contém executáveis de 32 bits. Descobri que não consigo executar esses binários de 32 bits. Tentar iniciá-los a partir do bash me dá um erro:
$ ./adb
bash: ./adb: No such file or directory
Está lá, porém:
$ 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 a 32 bits, mas isso parece não funcionar mais.
Como executo aplicativos de 32 bits em um Ubuntu 14.04 de 64 bits?
Respostas:
Para executar um arquivo executável de 32 bits em um multi-arquitetura do sistema Ubuntu de 64 bits, você tem que adicionar a
i386
arquitetura e instalar os três pacotes de bibliotecaslibc6:i386
,libncurses5:i386
elibstdc++6:i386
:Ou se você estiver usando o Ubuntu 12.04 LTS (Precise Pangolin) ou abaixo, use o seguinte:
Então:
Se falhar, faça também
Após estas etapas, você poderá executar o aplicativo de 32 bits:
fonte
lib32z1
também, mas notei que ele puxava a libc6-i386 (distinção, observe o hífen, não os dois pontos).libc6:i386
,libncurses5:i386
,libstdc++6:i386
estão versão mais recente e definido para instalado manualmente. Mas depois disso diz: "Soma packages could not be installed.This may mean you have requested impossible situation or you are using unstable distribution ...
" e dependências não atendidas:libstdc++6-4.4-dev:i386
dependeg++-4.4:i386
(não será instalado). conflitos:libstdc++6-4.4-dbg:i386
... e outros conflitos sobrelibstdc++6-4.4/6/7
etc. O que está errado ou devo deixar como está agora?"Nenhum arquivo ou diretório desse tipo" pode aparecer quando você tem o seu binário, mas faltam algumas bibliotecas. Se você instalar o
build-essential
pacote, você terá oldd
comando disponível. Este comandoldd ./adb | grep not
irá mostrar quais bibliotecas estão faltando. Basta instalar essas bibliotecas no i386 arch com o apt. Assim:apt-get install libmissing:i386
Cuidado, alguns pacotes de bugs tentam excluir os abetos da versão de 64 bits.fonte
E se você quiser usar "adb", há um pacote para isso:
E cerca de bibliotecas de 32 bits - apenas:
Será suficiente.
fonte
Além da excelente resposta de Zanna e Avinash Raj, eu tive que instalar o gcc-multilib também:
Possivelmente isso é porque eu queria rodar uma versão antiga do gcc em 64 bits.
fonte