É um arquivo executável que perde as bibliotecas necessárias. Use ldd
para ver o que é necessário e forneça esses arquivos.
No Ubuntu, recebo um erro 'Não há arquivo ou diretório' quando tento executar um comando.
Eu verifiquei com ls -la
, o arquivo adb
está lá e tem a marcação 'x'
Então, por que estou recebendo um "Nenhum arquivo ou diretório"?
~/Programs/android-sdk-linux_x86/platform-tools$ ./adb
bash: ./adb: No such file or directory
~/Programs/android-sdk-linux_x86/platform-tools$ ls -la
total 34120
drwxrwxr-x 3 silverstri silverstri 4096 2011-10-08 18:50 .
drwxrwxr-x 8 silverstri silverstri 4096 2011-10-08 18:51 ..
-rwxrwxr-x 1 silverstri silverstri 3764858 2011-10-08 18:50 aapt
-rwxrwxr-x 1 silverstri silverstri 366661 2011-10-08 18:50 adb
-rwxrwxr-x 1 silverstri silverstri 906346 2011-10-08 18:50 aidl
-rwxrwxr-x 1 silverstri silverstri 328445 2011-10-08 18:50 dexdump
-rwxrwxr-x 1 silverstri silverstri 2603 2011-10-08 18:50 dx
drwxrwxr-x 2 silverstri silverstri 4096 2011-10-08 18:50 lib
-rwxrwxr-x 1 silverstri silverstri 14269620 2011-10-08 18:50 llvm-rs-cc
-rwxrwxr-x 1 silverstri silverstri 14929076 2011-10-08 18:50 llvm-rs-cc-2
-rw-rw-r-- 1 silverstri silverstri 241 2011-10-08 18:50 llvm-rs-cc.txt
-rw-rw-r-- 1 silverstri silverstri 332494 2011-10-08 18:50 NOTICE.txt
-rw-rw-r-- 1 silverstri silverstri 291 2011-10-08 18:50 source.properties
O Android SDK requer bibliotecas de 32 bits. Você provavelmente está em 64 bits e precisa das bibliotecas de 32 bits. Aqui estão as instruções de solução de problemas de developer.android.com
Para o Ubuntu 13.10 (Saucy Salamander) e acima, instale os pacotes libncurses5:i386
, libstdc++6:i386
e zlib1g:i386
usando o apt-get:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
Para versões anteriores do Ubuntu, instale o pacote ia32-libs
usando o apt-get:
apt-get install ia32-libs
sudo apt-get install --reinstall libc6-i386
também é necessário para mim.
Eu também estava vendo o mesmo depois de trocar minha máquina do ubuntu de 32 bits para 64 bits. O Bash informaria 'Nenhum arquivo ou diretório' de arquivos que existiam claramente com o atributo execute.
sudo apt-get install --reinstall libc6-i386
Corrigido o problema. Estas são as "bibliotecas GNU C: bibliotecas compartilhadas de 32 bits para AMD64"
Parece que isso é um bug no bash. Note que eu também mudei o shell padrão de dash para bash usando
sudo dpkg-reconfigure dash
antes de tentar executar o executável de 32 bits. Então, eu não tenho certeza se o problema teria acontecido com o shell traço padrão
Em um novo Xubuntu 13.10 x64 instalar eu tenho adb
para executar com:
sudo apt-get install --reinstall libc6-i386
sudo apt-get install libstdc++6:i386
E também zlib1g:i386
para fazer aapt
funcionar.
e se você ainda sente falta de algo, use:
lld adb
Para adb, verifique se você descompactou o SDK e executou o SDK Manager para preencher totalmente o SDK. Além disso, verifique se você tem o seguinte instalado: A.) JDK 6 ou melhor B.) lib32stdc ++ 6 C.) lib32ncurses5
hoffmanc foi o mais próximo de acertar, eu realmente não entendo porque a resposta de Daniel Beck está marcada como correta quando não está nem perto e não tem nada a ver com o problema.
Por acaso, se você tentar executar um comando realmente inexistente (por exemplo:
# fakecommand
você obterá: fakecommand: comando não encontrado, enquanto na sua situação a saída que você está vendo está vindo do adb mesmo que não esteja muito claro que é o caso.
O Ubunto parece ter alguns problemas com compatibilidade com o LSB, então tente isso se você estiver no Ubunto
apt-get install lsb
Note que o ldd irá mostrar que todas as bibliotecas estão lá, mas elas não estão.
usmp-vm-lamp01$ ldd lmgrd
linux-vdso.so.1 => (0x00007fffb33fe000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10b0a48000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10b074c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f10b0535000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f10b0175000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f10aff71000)
/lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f10b0c67000)
usmp-vm-lamp01$ locate libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
usmp-vm-lamp01$ locate libm.so.6
/lib/x86_64-linux-gnu/libm.so.6
usmp-vm-lamp01$ locate /lib64/ld-lsb-x86-64.so.3
usmp-vm-lamp01$