bash에 '해당 파일이나 디렉토리가 없습니다'오류가 있지만 파일이 존재합니까?


29

우분투에서 명령을 실행하려고 할 때 'No such file or directory'오류가 발생합니다.

로 확인 했는데 ls -la파일 adb이 있으며 'x'플래그가 있는데 왜 'No such file or directory'가 표시됩니까?

~/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를 얻습니다. ELF 32 비트 LSB 실행 파일, Intel 80386, 버전 1 (SYSV), 동적으로 연결 (공유 라이브러리 사용), GNU / Linux 2.6.8 용, 제거되지 않음'
michael

답변:


16

필요한 라이브러리가 누락 된 실행 파일입니다. 사용 ldd후이 파일을 제공, 무엇을 필요로하는지 확인합니다.


11
나는이 '$는 LDD ./adb하지 동적 실행'얻을
마이클

55

Android SDK에는 32 비트 라이브러리가 필요합니다. 아마도 64 비트에 있고 32 비트 라이브러리가 필요합니다. 다음은 developer.android.com 의 문제 해결 지침 입니다.

위의 우분투 13.10 (건방진 도롱뇽)과의 경우, 설치 libncurses5:i386, libstdc++6:i386zlib1g: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-libsapt-get을 사용 하여 패키지를 설치하십시오 .

apt-get install ia32-libs

2
많은 것을 설치합니다. 그러나 작동합니다.
트래비스 Reeder 보낸

1
michael과 마찬가지로 "file"은 32 비트 ELF 바이너리이고 ldd는 동적 실행 파일이 아니라고 말했습니다. 이 32 비트 라이브러리를 설치하면 문제가 해결되었습니다.
Eponymous

2
가장 오해의 소지가있는 오류 메시지! o_O
MathematicalOrchid

re : {developer.android.com의 문제 해결 방법은 다음과 같습니다. 문제 해결 방법이 없습니다 ...
ruslo

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

나에게도 필요합니다.


3
도움이 되었습니까? 왜 그런지 알아? 어디서 구했습니까?
Tamara Wijsman

3

내 컴퓨터를 32 비트 우분투에서 64 비트로 전환 한 후에도 똑같이 나타났습니다. Bash는 execute 속성과 함께 존재하는 파일의 'No such file or directory'를보고합니다.

sudo apt-get install --reclibc6-i386 설치

문제를 해결했습니다. "GNU C 라이브러리 : AMD64 용 32 비트 공유 라이브러리"

이것은 bash의 버그 인 것 같습니다. 또한 기본 쉘을 대시에서 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 updatelibstdc ++ 6 : i386을 사용할 수있게하기 위해 전화 를 해야했다
nicopico

당신이 생각하는 것ldd adb
Prashanth Chandra

1

adb의 경우 SDK의 압축을 풀고 SDK 관리자를 실행하여 SDK를 완전히 채 웁니다. 또한 다음이 설치되어 있는지 확인하십시오. A.) JDK 6 이상 B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc는 그것을 올바르게 얻는 가장 가까운 곳입니다. Daniel Beck의 대답이 왜 가깝지 않고 문제와 관련이 없는지 왜 정확한 것으로 표시되는지 이해하지 못합니다.

또한 실제로 존재하지 않는 명령 (예 :

# fakecommand

당신은 얻을 것이다 : fakecommand : command not found, 당신의 상황에서 당신이보고있는 결과는 실제로 명확하지 않지만 adb에서 실제로 나온 것입니다.


1

우분 토는 LSB 호환성에 문제가있는 것 같습니다. 우분투에 있다면 이것을 시도하십시오

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.16.16.14
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.