존재하는데 왜 "찾을 수 없음"이라고 표시됩니까? [복사]

존재하는데 왜 "찾을 수 없음"이라고 표시됩니까? [복사]

중복 가능성:
Optware가 설치된 바이너리에 "해당 파일이나 디렉터리가 없습니다"라고 표시됩니다.

작은 라우터 박스에 ebtables를 추가하려고 합니다. 가서 올바른 아키텍처에 맞게 컴파일된 바이너리를 가져와서 여기에 넣었습니다 /sbin/. 이렇게 하면 /sbin/ebtables쉘에서는 다음과 같이 말하지만 /bin/sh: /sbin/ebtables: not found이렇게 하면 ls -l /sbin/ebtables완벽하게 표시됩니다.

-rwxr-xr-x    1 admin    admin        4808 Aug  4 10:36 /sbin/ebtables

여기서 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?

답변1

종속성이 누락되었을 수 있습니다. ELF헤더에 설정된 런타임 링커("프로그램 인터프리터")가 시스템에 존재하지 않는 경우 이러한 유형의 메시지를 받게 된다는 점은 주목할 가치가 있습니다 .

이를 확인하려면 다음을 실행하세요.

readelf -l your_executable|grep "program interpreter"

그것이 제공하는 것이 시스템에 존재하지 않거나 종속성이 누락된 경우( 확인 ldd) 이상한 오류 메시지가 표시됩니다.

데모:

$ gcc -o test t.c
$ readelf -l test|grep "program interpreter"
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
$ ./test
hello!

$ gcc -Wl,--dynamic-linker -Wl,/i/dont/exist.so -o test t.c
$ readelf -l test|grep "program interpreter"
      [Requesting program interpreter: /i/dont/exist.so]
$ ./test
bash: ./test: No such file or directory

답변2

당신은 그것을 실행합니까 root? IIRC 일부 bash 구현이 실행을 거부합니다.아무것에서 /sbin/usr/sbin그렇지 않은 경우 root.

내가 찾은이 기사설명을 찾고 있습니다(OpenSUSE에 대해 이야기하면 관련이 없을 수도 있음).

관련 정보