저는 elf 파일을 검사하는 스크립트를 작성하고 있습니다. 그리고 어떤 시점에서 연결 유형을 점검해야합니다.
그래서,
출력 파일이 완전히 정적 링크인지 동적 링크인지를 확인하는 데 사용할 수있는 도구가 안정적입니까?elf 파일의 연결 유형을 알려주는 방법은 무엇입니까?
'ld.so --verify'는 파일이 동적 연결인지 확인할 수 있지만이 링커에서 핸들 링 할 수 있는지 여부를 확인할 수 있으므로 링크 유형을 결정할 때 결과를 사용할 수 없습니다.
'nm', 'file'과 같은 다른 도구는 출력 파일을 확인하고 인쇄 메시지별로 유형을 연결하는 것에 대한 정보를 제공하므로 사용하기가 쉽지 않습니다. 링크 유형을 검증 할 때 '파일 $ filename'의 표준 출력을 '동적으로 링크'한 '동적으로 링크 된'단어를 grep하는 스크립트를 작성하면 신뢰성이 떨어집니다.
그래서 간단한 방법이 있습니까? 작은 도구 링크 유형을 확인하려면? 왜 불가능합니까? 이 동적으로 정적이 1
감사합니다. 하지만 ldd에 대한 소스 코드를 확인했는데 ldd가 동적 링크가 아닌 경우에만 1을 리턴한다고 생각하지 않습니다. 다른 이유이기도하므로 그 결과를 사용할 수 없습니다. – user1836141
@ user1836141 사실, 파일이 존재하지 않거나 엘프가 아닌 경우 ldd를 사용하기 전에 확인할 수 있습니다. 다른 명령도 동일한 문제가 있음을 유의하십시오. – iabdalkader
'readelf -d'라는 명령이있어 elf 파일의 동적 섹션을 검사하지만 불행히도 동적 섹션이 없어도 0을 반환합니다. 그렇지 않으면 해결책이 될 수 있습니다. 또 다른 가능한 해결책은 'readelf -h'를 사용하여 elf 헤더 섹션을 나열한 다음 출력을 grep하는 것입니다. 다시 ... 전혀 아름답 지 않지만 다른 것보다 더 신뢰할 수 있습니다 ... 잘 모르겠습니다 ... 좀 더 나은 솔루션을 얻을 수 있기를 바랍니다. – user1836141