No Ubuntu, recebo o erro 'Não existe esse arquivo ou diretório' quando tento executar um comando.
Eu verifiquei com ls -la
, o arquivo adb
está lá e tem o sinalizador 'x' Então, por que estou recebendo o 'Não existe esse 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
file adb
Respostas:
É um arquivo executável que perde as bibliotecas necessárias. Use
ldd
para ver o que ele precisa e forneça esses arquivos.fonte
O SDK do Android requer bibliotecas de 32 bits. Você provavelmente está em 64 bits e precisa das bibliotecas de 32 bits. Aqui estão as instruções para solução de problemas em developer.android.com
Para o Ubuntu 13.10 (Saucy Salamander) e acima, instale o
libncurses5:i386
,libstdc++6:i386
, ezlib1g:i386
pacotes usando apt-get:Para versões anteriores do Ubuntu, instale o
ia32-libs
pacote usando o apt-get:fonte
também é necessário para mim.
fonte
Eu também estava vendo o mesmo depois de mudar minha máquina do ubuntu de 32 bits para o de 64 bits. O Bash reportaria 'Esse arquivo ou diretório' não existe claramente com o atributo execute.
Corrigido o problema. Estas são as "Bibliotecas GNU C: bibliotecas compartilhadas de 32 bits para AMD64"
Parece que isso é um bug no bash. Observe que eu também mudei o shell padrão de dash para bash usando
antes de eu tentar executar o executável de 32 bits. Portanto, não tenho certeza se o problema teria acontecido com o shell de traço padrão
fonte
Em uma nova instalação do Xubuntu 13.10 x64, executei
adb
:E também
zlib1g:i386
para fazer oaapt
trabalho.e se você ainda perder algo, use:
fonte
sudo dpkg --add-architecture i386; sudo apt-get update
para fazer libstdc ++ 6: i386 disponívelldd adb
Para adb, verifique se o SDK foi descompactado e se executou o SDK Manager para preencher completamente o SDK. Além disso, verifique se você possui o seguinte instalado: A.) JDK 6 ou superior B.) lib32stdc ++ 6 C.) lib32ncurses5
hoffmanc foi o mais próximo de acertar, eu realmente não entendo por que a resposta de Daniel Beck é marcada como correta quando não está nem perto e não tem nada a ver com o problema.
Aliás, se você tentar executar um comando verdadeiramente inexistente (ou seja:
você receberá: fakecommand: comando não encontrado, enquanto na sua situação a saída que você está vendo é realmente proveniente do adb, embora não seja muito claro o caso.
fonte
O Ubunto parece ter alguns problemas com a compatibilidade com LSB, então tente isso se você estiver no Ubunto
Observe que o ldd meio que mostra que todas as bibliotecas estão lá, mas não estão.
fonte