Errore "Nessun file o directory simile" in bash, ma il file esiste?


29

Su Ubuntu, ottengo un errore "Nessun file o directory simile" quando provo ad eseguire un comando.

Ho controllato con ls -la, il file adbè lì e ha il flag 'x' Quindi perché sto ricevendo un 'No file o directory'?

~/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

cosa ottieni se corrifile adb
jdigital

ottengo questo '$ file adb adb: eseguibile LSB ELF a 32 bit, Intel 80386, versione 1 (SYSV), collegato dinamicamente (usa librerie condivise), per GNU / Linux 2.6.8, non rimosso'
michael,

Risposte:


16

È un file eseguibile che manca le librerie richieste. Utilizzare lddper vedere di cosa ha bisogno, quindi fornire questi file.


11
ottengo questo "$ ldd ./adb non un eseguibile dinamico"
michael l'

55

Android SDK richiede librerie a 32 bit. Probabilmente sei su 64 bit e hai bisogno delle librerie a 32 bit. Ecco le indicazioni per la risoluzione dei problemi da developer.android.com

Per Ubuntu 13.10 (Saucy Salamander) e soprattutto, installare libncurses5:i386, libstdc++6:i386, e zlib1g:i386pacchetti usando apt-get:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

Per le versioni precedenti di Ubuntu, installa il ia32-libspacchetto usando apt-get:

apt-get install ia32-libs

2
accidenti che installa molte cose. Ma funziona
Travis Reeder

1
Come michael, "file" mi ha detto che era un binario ELF a 32 bit e ldd mi ha detto che non era un eseguibile dinamico. L'installazione di queste librerie a 32 bit ha risolto il problema.
Eponimo

2
Messaggio di errore più fuorviante MAI! o_O
matematica

re: {Qui ci sono le indicazioni per la risoluzione dei problemi da developer.android.com} Non vedo nessuna indicazioni per la risoluzione dei problemi lì ...
ruslo,

4
sudo apt-get install --reinstall libc6-i386

è anche bisogno di me.


3
Intendi dire che ha aiutato? Qualche idea sul perché? Da dove l'hai preso?
Tamara Wijsman,

3

Stavo vedendo lo stesso anche dopo aver cambiato la mia macchina da Ubuntu a 32 bit a 64 bit. Bash segnalerebbe "Nessun file o directory" di file chiaramente esistenti con l'attributo execute.

sudo apt-get install --reinstall libc6-i386

Risolto il problema Questi sono "GNU C Library: librerie condivise a 32 bit per AMD64"

Sembra che questo sia un bug in Bash. Nota che ho anche cambiato la shell predefinita da dash a bash usando

sudo dpkg-reconfigure dash

prima ho provato a eseguire l'eseguibile a 32 bit. Quindi non sono sicuro che il problema si sarebbe verificato con la dash dash predefinita


2

Su una nuova installazione di Xubuntu 13.10 x64 ho potuto adbeseguire:

sudo apt-get install --reinstall libc6-i386
sudo apt-get install libstdc++6:i386

E anche zlib1g:i386per far aaptfunzionare.

e se ti manca ancora qualcosa usa:

lld adb

Questo ha funzionato benissimo per me, ma ho dovuto chiamare sudo dpkg --add-architecture i386; sudo apt-get updateper rendere disponibile libstdc ++ 6: i386
nicopico,

Penso che volevi direldd adb
Prashanth Chandra,

1

Per adb, assicurati di aver decompresso l'SDK e di aver eseguito SDK Manager per popolare completamente l'SDK. Assicurati inoltre di avere installato quanto segue: A.) JDK 6 o superiore B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc era il più vicino a farlo bene, non capisco davvero perché la risposta di Daniel Beck sia contrassegnata come corretta quando non è nemmeno vicina e non ha nulla a che fare con il problema.

Per inciso, se si tenta di eseguire un comando veramente inesistente (ovvero:

# fakecommand

otterrai: fakecommand: comando non trovato, mentre nella tua situazione l'output che stai vedendo proviene effettivamente da adb anche se non è molto chiaro che sia così.


1

Ubunto sembra avere alcuni problemi con la compatibilità LSB, quindi prova questo se sei su Ubunto

apt-get install lsb

Si noti che ldd mostrerà che tutte le librerie sono presenti, ma non lo sono.

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$

Stavo avendo questo problema con un pacchetto di riconoscimento vocale chiamato Julius. Questo è ciò che l'ha risolto per me.
Fireandlight27,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.