Помилка у файлі 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

я отримую цей $ $ adb adb: 32-розрядний виконуваний файл LSB ELF, Intel 80386, версія 1 (SYSV), динамічно пов'язаний (використовує спільні конверти), для GNU / Linux 2.6.8, не позбавлений '
michael

Відповіді:


16

Це виконуваний файл, який не вистачає потрібних бібліотек. Використовуйте, lddщоб побачити, що йому потрібно, а потім надайте ці файли.


11
я отримую це '$ ldd ./adb не динамічний виконуваний файл'
michael

55

Android SDK вимагає 32-бітних бібліотек. Напевно, ви перебуваєте на 64-розрядному і вам потрібні 32-бітні libs. Ось інструкції щодо усунення несправностей від 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
Як і Майкл, "файл" сказав мені, що це 32-бітний ELF бінарний, і ldd сказав мені, що це не динамічний виконуваний файл. Встановлення цих 32-бітових бібліотек вирішило проблему.
однойменний

2
Найбільш оманливе повідомлення про помилку ВСЕ! o_O
MathematicalOrchid

re: {Ось вказівки щодо усунення несправностей від developer.android.com} Я не бачу там ніяких вказівок щодо усунення несправностей ...
ruslo

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

мені також потрібна.


3
Ви мали на увазі, що це допомогло? Будь-яка ідея чому? Звідки ти це взяв?
Тамара Війсман

3

Я також бачив те саме після переключення моєї машини з 32-бітного ubuntu на 64-бітну. Bash повідомив би "Немає такого файлу чи каталогу" файлів, які явно існували з атрибутом Execute.

sudo apt-get install - знову встановіть libc6-i386

Виправлена ​​проблема. Це "Бібліотека GNU C: 32-бітова бібліотека для AMD64"

Здається, це помилка в базі. Зауважте, що я також змінив оболонку за замовчуванням з тире на bash, використовуючи

sudo dpkg-переналаштування тире

перш ніж я спробував запустити 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, щоб повністю заповнити SDK. Крім того, переконайтеся, що у вас встановлено наступне: A.) JDK 6 або вище B.) lib32stdc ++ 6 C.) lib32ncurses5

Хофманк був найближчим до того, щоб правильно це зрозуміти, я не розумію, чому відповідь Деніела Бека позначена як правильна, коли вона навіть не є близькою і не має нічого спільного з проблемою.

До речі, якщо ви спробуєте запустити справді неіснуючу команду (тобто:

# fakecommand

ви отримаєте: fakecommand: команда не знайдена, тоді як у вашій ситуації вихід, який ви бачите, насправді надходить з 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$

У мене виникли проблеми з пакетом розпізнавання мови під назвою Юлій. Це те, що зафіксувало це для мене.
Fireandlight27
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.