실행파일이 [중복]되지 않은 경우

실행파일이 [중복]되지 않은 경우

중복 가능성:
chroot 환경에서 특정 바이너리를 실행할 수 없습니다(zsh: 찾을 수 없음)

오늘 저는 저를 혼란스럽게 만드는 일을 만났습니다. 동료가 다운로드한 특정 사전 컴파일된 바이너리를 사용하고 있습니다(사용 가능).여기). 사용 중인 Ubuntu 10.04 LTS 서버에서 이 파일을 실행하려고 하면 권한이 올바르게 설정되었음에도 불구하고 파일을 찾을 수 없습니다.

그러나 OpenSUSE 11.4에서 동일한 작업을 시도했을 때 완벽하게 작동했습니다. 그것을 실행하면 file다음이 제공됩니다.

ELF 32비트 LSB 실행 파일, Intel 80386, 버전 1(SYSV), 동적으로 링크됨(공유 라이브러리 사용), GNU/Linux 2.6.15용, 제거됨

Ubuntu 및 OpenSUSE 시스템은 모두 64비트 설치이며 file두 시스템 모두에서 동일한 정보를 반환합니다.

내가 보기에는 이게 좋아 보인다. opensuse 상자에서 LDD는 나에게 라이브러리 파일의 짧은 목록도 제공했습니다. 수동 검사 시 지정된 파일은 모두 Ubuntu 서버에도 존재합니다. 그러나 Strace 출력은 다릅니다.

다음을 사용하여 엽니다.

execve("./trid", ["./trid"], [/* 122 vars */]) = 0

Ubuntu(전체 경로를 제공해도 결과는 변경되지 않음):

execve("./trid", ["./trid"], [/* 19 vars */]) = -1 ENOENT (해당 파일이나 디렉터리 없음)

이러한 파일이 이런 방식으로 실행되지 않는 원인은 무엇입니까?

답변1

유형

ldd ./trid

이는 openSuse 및 Ubuntu 시스템 모두에서 작동합니다.

나는 후자에 대한 라이브러리 파일이 누락된 것을 발견할 것이라고 생각합니다.

관련 정보