게임 (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하여 문제 를 해결했습니다.