'Không có lỗi tệp hoặc thư mục như vậy trong bash, nhưng tệp tồn tại?


29

Trên Ubuntu, tôi gặp lỗi 'Không có tệp hoặc thư mục như vậy' khi tôi cố thực thi lệnh.

Tôi đã kiểm tra ls -la, tệp adbcó ở đó và nó có cờ 'x' Vậy tại sao tôi nhận được 'Không có tệp hoặc thư mục như vậy'?

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

bạn nhận được gì nếu bạn chạyfile adb
jdigital

Tôi nhận được '$ adb adb adb: ELF 32-bit LSB thực thi, Intel 80386, phiên bản 1 (SYSV), được liên kết động (sử dụng libs được chia sẻ), cho GNU / Linux 2.6.8, không bị tước'
michael

Câu trả lời:


16

Đây là một tập tin thực thi mà bỏ lỡ các thư viện cần thiết. Sử dụng lddđể xem những gì nó cần, sau đó cung cấp các tệp này.


11
tôi nhận được '$ ldd ./adb không phải là một tệp thực thi động'
michael

55

Android SDK yêu cầu thư viện 32 bit. Bạn có thể đang ở trên 64 bit và cần libs 32 bit. Dưới đây là hướng dẫn khắc phục sự cố từ developer.android.com

Đối với Ubuntu 13.10 (Saucy Salamander) trở lên, cài đặt libncurses5:i386, libstdc++6:i386zlib1g:i386các gói sử dụng apt-get:

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

Đối với các phiên bản Ubuntu trước đó, hãy cài đặt ia32-libsgói bằng apt-get:

apt-get install ia32-libs

2
chết tiệt mà cài đặt rất nhiều thứ. Nhưng nó đã có tác dụng.
Travis Reeder

1
Giống như michael, "tập tin" nói với tôi rằng đó là tệp nhị phân ELF 32 bit và ldd nói với tôi rằng nó không phải là một tệp thực thi động. Cài đặt các thư viện 32 bit này đã khắc phục sự cố.
Eponymous

2
Thông báo lỗi sai nhất EVER! o_O
Toán học,

re: {Dưới đây là các hướng khắc phục sự cố từ developer.android.com} Tôi không thấy bất kỳ hướng khắc phục sự cố nào ở đó ...
ruslo

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

cũng cần cho tôi


3
Bạn có nghĩa là đã giúp? Bất cứ ý tưởng tại sao? Bạn đã có cái này từ đâu?
Tamara Wijsman

3

Tôi cũng đã thấy điều tương tự sau khi chuyển máy của tôi từ ubfox 32 bit sang 64 bit. Bash sẽ báo cáo 'Không có tệp hoặc thư mục như vậy' của các tệp tồn tại rõ ràng với thuộc tính thực thi.

sudo apt-get install - cài đặt libc6-i386

Đã khắc phục sự cố. Đây là "Thư viện GNU C: Thư viện chia sẻ 32 bit cho AMD64"

Có vẻ như đây là một lỗi trong bash. Lưu ý rằng tôi cũng đã thay đổi shell mặc định từ dấu gạch ngang sang bash bằng cách sử dụng

sudo dpkg-cấu hình lại dash

trước khi tôi thử chạy tệp thực thi 32 bit. Vì vậy, tôi không chắc vấn đề có xảy ra với shell dash mặc định không


2

Trên bản cài đặt Xubfox 13.10 x64 mới, tôi adbphải chạy với:

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

Và cũng zlib1g:i386để làm aaptviệc.

và nếu bạn vẫn bỏ lỡ một cái gì đó sử dụng:

lld adb

Điều này làm việc rất tốt cho tôi, nhưng tôi đã phải gọi sudo dpkg --add-architecture i386; sudo apt-get updateđể cung cấp libstdc ++ 6: i386
nicopico

Tôi nghĩ ý của bạn làldd adb
Prashanth Chandra

1

Đối với adb, hãy đảm bảo rằng bạn đã giải nén SDK và đã chạy Trình quản lý SDK để điền đầy đủ SDK. Ngoài ra, hãy đảm bảo bạn đã cài đặt các phần sau: A.) JDK 6 hoặc tốt hơn B.) lib32stdc ++ 6 C.) lib32ncurses5

Hoffmanc là người gần nhất hiểu đúng, tôi thực sự không hiểu tại sao câu trả lời từ Daniel Beck lại được đánh dấu là chính xác khi nó thậm chí không gần và không liên quan gì đến vấn đề.

Ngẫu nhiên, nếu bạn cố chạy một lệnh thực sự không tồn tại (ví dụ:

# fakecommand

bạn sẽ nhận được: fakecommand: lệnh không được tìm thấy, trong khi đó trong tình huống của bạn, đầu ra bạn đang thấy thực sự đến từ adb mặc dù đó không phải là trường hợp rõ ràng.


1

Ubunto dường như có một số vấn đề với khả năng tương thích LSB, vì vậy hãy thử điều này nếu bạn đang ở trên Ubunto

apt-get install lsb

Lưu ý rằng ldd sẽ hiển thị rằng tất cả các thư viện đều ở đó, nhưng chúng không có.

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$

Tôi đã gặp vấn đề này với gói nhận dạng giọng nói gọi là Julius. Đây là những gì cố định nó cho tôi.
Fireandlight27
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.