ข้อผิดพลาด "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" ในไฟล์ทุบตี แต่มีไฟล์อยู่หรือไม่


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: ELF ปฏิบัติการ 32 บิต LSB, Intel 80386, รุ่น 1 (SYSV), เชื่อมโยงแบบไดนามิก (ใช้ libs ที่ใช้ร่วมกัน), สำหรับ GNU / Linux 2.6.8, ไม่ได้ปล้น'
michael

คำตอบ:


16

มันเป็นไฟล์ปฏิบัติการที่พลาดไลบรารีที่จำเป็น ใช้lddเพื่อดูสิ่งที่ต้องการจากนั้นจัดเตรียมไฟล์เหล่านี้


11
ฉันได้รับนี้ '$ ldd ./adb ไม่ใช่ปฏิบัติการที่ไม่หยุดนิ่ง'
michael

55

Android SDK ต้องการไลบรารีแบบ 32 บิต คุณอาจใช้แบบ 64 บิตและต้องการ libs 32 บิต นี่คือคำแนะนำการแก้ไขปัญหาจากdeveloper.android.com

สำหรับ Ubuntu 13.10 (Saucy 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
เจ้ากรรมที่ติดตั้งสิ่งต่าง ๆ มากมาย แต่มันได้ผล
Travis Reeder

1
เช่นเดียวกับไมเคิล "ไฟล์" บอกฉันว่ามันเป็นไบนารีเอลฟ์ 32 บิตและ ldd บอกฉันว่ามันไม่ได้เป็นแบบไดนามิกที่ปฏิบัติการได้ การติดตั้งไลบรารี 32 บิตเหล่านี้ช่วยแก้ไขปัญหาได้
Eponymous

2
ข้อความแสดงข้อผิดพลาดที่ทำให้เข้าใจผิดมากที่สุดที่เคย! o_O
คณิตศาสตร์

Re: {นี่คือคำแนะนำในการแก้ไขปัญหาจาก developer.android.com} ฉันไม่เห็นทิศทางการแก้ไขปัญหาใด ๆ ที่นั่น ...
ruslo

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

ยังต้องการสำหรับฉัน


3
คุณหมายถึงสิ่งนั้นช่วยเหรอ? มีความคิดอะไรไหม คุณได้สิ่งนี้มาจากไหน
Tamara Wijsman

3

ฉันก็เห็นเหมือนกันหลังจากเปลี่ยนเครื่องของฉันจาก 32 บิต ubuntu เป็น 64 บิต Bash จะรายงานว่า 'ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว' ของไฟล์ที่มีอยู่อย่างชัดเจนกับแอตทริบิวต์ execute

sudo apt-get install - ติดตั้ง libc6-i386 อีกครั้ง

แก้ไขปัญหา นี่คือ "GNU C Library: ไลบรารีที่แบ่งใช้แบบ 32 บิตสำหรับ AMD64"

ดูเหมือนว่านี่เป็นข้อผิดพลาดในการทุบตี โปรดทราบว่าฉันยังเปลี่ยนเปลือกเริ่มต้นจากเส้นประเพื่อทุบตีโดยใช้

sudo dpkg-reconfigure dash

ก่อนที่ฉันจะลองเรียกใช้ไฟล์ปฏิบัติการ 32 บิต ดังนั้นฉันไม่แน่ใจว่าปัญหาจะเกิดขึ้นกับเปลือก dash เริ่มต้นหรือไม่


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 updatelibstdc ++ 6: มี i386
nicopico

ฉันคิดว่าคุณหมายถึงldd adb
Prashanth Chandra

1

สำหรับ adb ตรวจสอบให้แน่ใจว่าคุณได้แกะกล่อง SDK ออกแล้วและเรียกใช้ SDK Manager เพื่อเติม SDK ให้สมบูรณ์ นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งสิ่งต่อไปนี้: A. ) JDK 6 หรือดีกว่า B. ) lib32stdc ++ 6 C. ) lib32ncurses5

hoffmanc นั้นใกล้เคียงที่สุดที่จะทำให้ถูกต้องฉันไม่เข้าใจจริงๆว่าทำไมคำตอบของ Daniel Beck จึงถูกทำเครื่องหมายว่าถูกต้องเมื่อยังไม่ใกล้และไม่มีอะไรเกี่ยวข้องกับปัญหา

อนึ่งหากคุณพยายามเรียกใช้คำสั่งที่ไม่มีอยู่จริง (เช่น:

# 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.