'Keine solche Datei oder Verzeichnis' Fehler in der Bash, aber die Datei existiert?

29

Unter Ubuntu wird beim Versuch, einen Befehl auszuführen, die Fehlermeldung "Keine solche Datei oder solches Verzeichnis" angezeigt.

Ich habe mit überprüft ls -la, die Datei adbist da und es hat "x" -Flag Warum bekomme ich also ein "Keine solche Datei oder Verzeichnis"?

~/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
michael
quelle
was bekommst du wenn du file adb
rennst
Ich bekomme diese '$ file adb adb: ELF 32-Bit-LSB-Programm, Intel 80386, Version 1 (SYSV), dynamisch verknüpft (verwendet gemeinsam genutzte Bibliotheken), für GNU / Linux 2.6.8, nicht entfernt'
michael

Antworten:

16

Es ist eine ausführbare Datei, in der die erforderlichen Bibliotheken fehlen. Verwenden Sie, um lddzu sehen, was benötigt wird, und geben Sie diese Dateien an.

Daniel Beck
quelle
11
Ich bekomme diese '$ ldd ./adb nicht eine dynamische ausführbare Datei'
Michael
55

Android SDK erfordert 32-Bit-Bibliotheken. Sie sind wahrscheinlich auf 64-Bit und benötigen die 32-Bit-Bibliotheken. Hier finden Sie die Anweisungen zur Fehlerbehebung von developer.android.com

Für Ubuntu 13.10 (Saucy Salamander) und darüber, installieren Sie das libncurses5:i386, libstdc++6:i386und zlib1g:i386Pakete mit apt-get:

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

Installieren Sie für frühere Versionen von Ubuntu das ia32-libsPaket mit apt-get:

apt-get install ia32-libs
hoffmanc
quelle
2
Verdammt, das installiert eine Menge Zeug. Aber es funktioniert.
Travis Reeder
1
Wie Michael hat "file" mir gesagt, dass es sich um eine 32-Bit-ELF-Binärdatei handelt, und ldd hat mir gesagt, dass es sich nicht um eine dynamische ausführbare Datei handelt. Die Installation dieser 32-Bit-Bibliotheken hat das Problem behoben.
Eponymous
2
Die irreführendste Fehlermeldung aller Zeiten! o_O
MathematicalOrchid
re: {Hier sind die Anweisungen zur Fehlerbehebung von developer.android.com} Ich kann dort keine Anweisungen zur Fehlerbehebung finden ...
ruslo
4
sudo apt-get install --reinstall libc6-i386

ist auch nötig für mich.

Shawe
quelle
3
Meinten Sie das hat geholfen? Irgendeine Idee warum? Woher hast du das?
Tamara Wijsman
3

Ich sah das auch, nachdem ich meine Maschine von 32-Bit-Ubuntu auf 64-Bit umgestellt hatte. Bash meldet "Keine solche Datei oder kein solches Verzeichnis" von Dateien, die eindeutig mit dem Ausführungsattribut vorhanden sind.

sudo apt-get install --installiere libc6-i386 neu

Problem behoben. Dies sind die "GNU C Library: 32-Bit Shared Libraries für AMD64"

Scheint, als wäre dies ein Fehler in der Bash. Beachten Sie, dass ich die Standard-Shell mit von Bindestrich zu Bash geändert habe

sudo dpkg-reconfigure dash

bevor ich versuchte, die ausführbare 32-Bit-Datei auszuführen. Ich bin mir also nicht sicher, ob das Problem mit der Standard-Dash-Shell aufgetreten wäre

user240504
quelle
2

Auf einer neuen Xubuntu 13.10 x64-Installation muss ich Folgendes adbausführen:

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

Und auch zlib1g:i386um aaptArbeit zu machen .

und wenn Sie noch etwas vermissen, verwenden Sie:

lld adb
Stéphane
quelle
Für mich hat sudo dpkg --add-architecture i386; sudo apt-get updatedas super geklappt , aber ich musste anrufen , um libstdc ++ 6: i386 verfügbar zu machen
nicopico
Ich denke, Sie meintenldd adb
Prashanth Chandra
1

Stellen Sie für adb sicher, dass Sie das SDK entpackt haben und führen Sie den SDK-Manager aus, um das SDK vollständig aufzufüllen. Stellen Sie außerdem sicher, dass Sie Folgendes installiert haben: A.) JDK 6 oder besser B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc war am nächsten dran, ich verstehe nicht wirklich, warum die Antwort von Daniel Beck als richtig markiert ist, wenn sie nicht einmal nah ist und nichts mit dem Problem zu tun hat.

Übrigens, wenn Sie versuchen, einen wirklich nicht existierenden Befehl auszuführen (dh:

# fakecommand

Sie erhalten: fakecommand: command not found, wohingegen in Ihrer Situation die Ausgabe, die Sie sehen, tatsächlich von adb kommt, obwohl es nicht sehr klar ist, dass dies der Fall ist.

Justin Buser
quelle
1

Ubunto scheint einige Probleme mit der LSB-Kompatibilität zu haben. Versuchen Sie dies also, wenn Sie mit Ubunto arbeiten

apt-get install lsb

Beachten Sie, dass ldd zeigt, dass alle Bibliotheken vorhanden sind, dies jedoch nicht.

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$
Mark Lakata
quelle
Ich hatte dieses Problem mit einem Spracherkennungspaket namens Julius. Das hat es für mich behoben.
Fireandlight27