게임 (Shank)을 다운로드했지만 bin 파일이 실행되지 않습니다. 실행 파일을 시작하려고 할 때 표시되는 오류는 다음과 같습니다.
bash: ./shank-linux-120720110-1-bin: No such file or directory
게임 (Shank)을 다운로드했지만 bin 파일이 실행되지 않습니다. 실행 파일을 시작하려고 할 때 표시되는 오류는 다음과 같습니다.
bash: ./shank-linux-120720110-1-bin: No such file or directory
답변:
32 비트 지원이 설치되지 않은 64 비트 시스템에서 32 비트 바이너리를 실행하려고합니다.
"No such file or directory"라는 메시지가 표시되는 세 가지 경우가 있습니다.
file shank-linux-120720110-1-bin
은“ELF 32 비트 LSB 실행 파일…”과 같은 것을 표시합니다). 그러나 파일을 실행하려고하면 파일이 존재하지 않는다는 메시지가 나타납니다.이 마지막 경우의 오류 메시지는 혼란 스럽습니다. 당신이 말하는 것은 프로그램을 실행하는 데 필요한 런타임 환경의 핵심 구성 요소가 없다는 것입니다. 불행히도, 오류가보고되는 채널은 오류 코드를위한 공간 만 가지고 있으며 실제로는 비난을받는 런타임 환경이라는 추가 정보가 없습니다. 이 설명의 기술 버전을 원하면 64 비트 시스템에서 32 비트 바이너리를 실행할 때 "찾을 수 없음"메시지 얻기를 참조하십시오 .
file
명령이 바이너리는 단지 무엇을 말할 것이다. 몇 가지 예외를 제외하고는 Ubuntu 릴리스의 프로세서 아키텍처에 대해서만 바이너리를 실행할 수 있습니다. 주요 예외는 64 비트 (amd64, 일명 x86_64) 시스템에서 32 비트 (x86, 일명 IA32) 바이너리를 실행할 수 있다는 것입니다.
우분투에서는 최대 11.04까지 64 비트 설치에서 32 비트 바이너리를 실행 하려면 ia32-libs
패키지 를 설치해야 합니다 . 추가 라이브러리를 설치해야 할 수도 있습니다 (해당하는 경우 명시적인 오류 메시지가 표시됨).
11.10 (oneiric)이 다중 아치 지원을 도입 한 이후에도 여전히 설치할 수 ia32-libs
는 있지만 더 세밀한 접근 방식을 선택할 수 있습니다 (필요한 다른 라이브러리).libc6-i386
ldd
라이브러리가 없는지 확인할 수 있습니다 . 다른 사람들 ldd kgio_ext.so
과 비슷한 말을 할 수도 libruby.so.2.3 => not found
있습니다
bash: ...some...path...: No such file or directory
실행 파일을 이동 한 후 나타날 수있는 또 다른 시나리오가 있습니다. Bash는 $ PATH에있는 실행 파일의 경로를 캐시하는 것 같습니다. hash -r
그것을 지우려면 실행 하십시오. 참조 : unix.stackexchange.com/a/5610/11352
file file-name
쇼 의 출력이
file-name: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
64 비트 멀티 아치 우분투 시스템에서 32 비트 실행 파일을 실행하려면 추가해야 i386
아키텍처를하고도 당신은 설치해야 libc6:i386
, libncurses5:i386
, libstdc++6:i386
이 세 가지 라이브러리 패키지를.
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name
libselinux1:i386
32 비트 용 deb를 설치하면 ia32-libs 및 libc6 외에도 일부 라이브러리가 누락되었음을 알았습니다. 먼저 다음 명령을 제공하여이 문제를 해결했습니다.
sudo apt-get install -f
그런 다음 다른 오류가 발생했습니다.
Message: SDL_GL_LoadLibrary
Error: Failed loading libGL.so.1
분명히이 라이브러리는 제대로 설치되었습니다. 세부 사항에 들어 가지 않고 손으로 라이브러리를 연결해야했습니다. Synaptic을 통해 다음 패키지를 설치하면 더 쉬운 솔루션이 될 수 있음을 깨달았습니다.
libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.
그 후 다음 문제는 재생하는 동안 검은 화면이었습니다 ./Shank/bin의 실행 파일을 다음과 같이 대체하여 해결했습니다. http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
누군가에게 도움이되기를 바랍니다. 도움이 필요하거나 자세한 내용이 필요하면 언제든지 저에게 연락하십시오.
다음은 문제의 본질과 Ubuntu 16.04에서 문제를 해결하는 방법에 대해 조금 더 보여주는 대화 내용입니다. 비록 것을 알 file
보고서는 "동적으로 링크 된", ldd
"동적 실행하지"보고합니다.
$ ./myprogram
bash: myprogram: No such file or directory
$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
$ ldd myprogram
not a dynamic executable
libc6 : i386을 설치하면 개선이 시작됩니다 ...
$ sudo apt-get install libc6:i386 # the initial fix
...
$ ldd myprogram
linux-gate.so.1 => (0xf77fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
/lib/ld-linux.so.2 (0x56578000)
$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
작업을 완료하려면 한 번에 하나씩 추가 라이브러리를 식별하고 설치해야합니다.
$ sudo apt-get install libstdc++6:i386 ## may require various additional libs
$ ./myprogram
... works correctly ...
설치할 올바른 라이브러리를 체계적으로 식별하는 방법이 있는지 모르겠습니다. 오류 메시지를 패키지 이름에 매핑하는 추측이 약간 있습니다 (탭 완성이 도움이 됨).
ldd
(잘못된) "동적 실행 파일이 아님"을보고합니다.
@Gilles 답변을 확장하려면 적어도 세 가지 시나리오가 있어이 오류가 발생합니다.
file
명령 작동) 수수께끼 오류 메시지가 나타납니다. 로더에 문제가 있음을 의미 할 수 있습니다.로더 문제의 범주 :
실행 파일 로더가 존재하지 않습니다. file 명령을 사용하여이를 점검하고 로더가 존재하는지 확인할 수 있습니다. 예 :
file lmgrd
lmgrd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
통지 interpreter /lib64/ld-lsb-x86-64.so.3
; 이 파일이 없으면 설치해야합니다. 16.04 의이 특정 로더의 경우 대답은 sudo apt-get install lsb
입니다.
스크립트 로더 관련 문제 ( 이 답변 참조 )
ldd <file-name>
"찾을 수 없음"라이브러리를 확인 하는 데 사용 하십시오. 자세한 내용은 이 답변 을 참조하십시오.존재하지 않는 로더는 32/64 비트 불일치 또는 다른 이유로 인해 발생할 수 있습니다. 내가 모르는 다른 종류의 로더 오류가있을 수 있습니다.
file lmutil
에는 통역사를 보여주지 않았지만 ldd
설치 lsb
하여 문제 를 해결했습니다.