오늘 저는 저를 혼란스럽게 만드는 일을 만났습니다. 동료가 다운로드한 특정 사전 컴파일된 바이너리를 사용하고 있습니다(사용 가능).여기). 사용 중인 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 시스템 모두에서 작동합니다.
나는 후자에 대한 라이브러리 파일이 누락된 것을 발견할 것이라고 생각합니다.