Ошибка «Нет такого файла или каталога» в bash, но файл существует?


29

В Ubuntu при попытке выполнить команду появляется ошибка «Нет такого файла или каталога».

Я проверил ls -la, файл adbтам, и у него есть флаг 'x' Так почему я получаю «Нет такого файла или каталога»?

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

я получаю этот '$ file adb adb: 32-битный исполняемый файл ELB ELF, Intel 80386, версия 1 (SYSV), динамически связанный (использует разделяемые библиотеки), для GNU / Linux 2.6.8, не удален "
Майкл

Ответы:


16

Это исполняемый файл, в котором отсутствуют необходимые библиотеки. Используйте, lddчтобы увидеть, что ему нужно, затем предоставьте эти файлы.


11
я получаю это «$ ldd ./adb не динамический исполняемый файл»
Майкл

55

Android SDK требует 32-битных библиотек. Вы, вероятно, на 64-битной и вам нужны 32-битные библиотеки. Вот инструкции по устранению неполадок от developer.android.com

Для Ubuntu 13.10 (Дерзкий Salamander) и выше, установите libncurses5:i386, libstdc++6:i386и zlib1g:i386пакеты с помощью APT-GET:

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

Для более ранних версий Ubuntu установите ia32-libsпакет, используя apt-get:

apt-get install ia32-libs

2
чёрт, что много чего устанавливает. Но это работает.
Трэвис Ридер

1
Как и Майкл, «file» сказал мне, что это 32-битный двоичный файл ELF, а ldd сказал, что это не динамический исполняемый файл. Установка этих 32-битных библиотек устранила проблему.
одноименный

2
Самое вводящее в заблуждение сообщение об ошибке КОГДА-ЛИБО! o_O
Математический

re: {Вот инструкции по устранению неполадок от developer.android.com} Я не вижу там инструкций по устранению неполадок ...
ruslo

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

Это также нужно для меня.


3
Вы имели в виду, что помогло? Есть идеи почему? Откуда ты это взял?
Тамара Вийсман

3

Я также видел то же самое после переключения моей машины с 32-битной Ubuntu на 64-битную. Bash сообщит «Нет такого файла или каталога» файлов, которые явно существуют с атрибутом execute.

sudo apt-get install --reinstall libc6-i386

Исправлена ​​проблема. Это «Библиотека GNU C: 32-битные разделяемые библиотеки для AMD64»

Похоже, это ошибка в Bash. Обратите внимание, что я также изменил оболочку по умолчанию с тире на bash, используя

sudo dpkg-refigure dash

прежде чем я попытался запустить 32-битный исполняемый файл. Так что я не уверен, что проблема произошла бы с панелью инструментов по умолчанию


2

На новой установке Xubuntu 13.10 x64 я adbзапустил:

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

А также zlib1g:i386сделать aaptработу.

и если вы все еще что-то упускаете, используйте:

lld adb

Это прекрасно сработало для меня, но мне пришлось позвонить, sudo dpkg --add-architecture i386; sudo apt-get updateчтобы сделать libstdc ++ 6: i386 доступным
nicopico

Я думаю, что вы имели в видуldd adb
Прашант Чандра

1

Для adb убедитесь, что вы распаковали SDK и запустили SDK Manager, чтобы полностью заполнить SDK. Кроме того, убедитесь, что у вас установлено следующее: A.) JDK 6 или лучше B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc был самым близким к получению этого права, я не очень понимаю, почему ответ от Даниэля Бека помечается как правильный, когда он даже не близок и не имеет никакого отношения к проблеме.

Кстати, если вы попытаетесь запустить действительно несуществующую команду (то есть:

# fakecommand

вы получите: fakecommand: command not found, тогда как в вашей ситуации вывод, который вы видите, на самом деле идет от adb, хотя не совсем понятно, в чем дело.


1

Ubunto, похоже, имеет некоторые проблемы с совместимостью LSB, поэтому попробуйте это, если вы находитесь на Ubunto

apt-get install lsb

Обратите внимание, что ldd будет показывать, что все библиотеки есть, но их нет.

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$

У меня была эта проблема с пакетом распознавания речи под названием Julius. Это то, что исправило это для меня.
Fireandlight27
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.