동적 라이브러리에서 내 보낸 심볼 목록을 인쇄하는 방법


120

그래서 저는 Mac OS X의 XCode 프로젝트에서 동적 라이브러리를 작동 시키려고 노력했습니다. 지금까지는 기쁨이 없었습니다.

dylib 파일을로드 할 수 있지만 dlsym을 호출하여 함수 포인터를 가져 오면 0을 반환하고 dlerror는 기호를 찾을 수 없다고 말합니다.

그래서 dylib 파일에서 내 보낸 기호를 나열하는 간단한 방법이 있는지 궁금합니다. 어떤 아이디어라도 좋을 것입니다.

답변:


152

남자 1 nm

https://web.archive.org/web/20160316222941/https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

예를 들면 :

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib

2
OS X Leopard (10.5, 예, 알아요 ...)에서는를 사용해야합니다 nm -gu. 즉, -u옵션은 소문자입니다.
Laryx Decidua 2015

4
man 1 nm는 독립적이며 명령 줄이 변경 ​​될 때 계속 작동
합니다.

9
@MK. man 1 nmnm로 할 수있는 일이 많이 있습니다. 다시 말하지만, 솔루션을 찾기 위해 읽을 수있는 외부 리소스이지만 요청 된 "dylib 파일에서 내 보낸 기호를 나열하는 간단한 방법"에 대한 솔루션 자체 는 아닙니다 . nm -gU ….dylib그러나 " "는입니다.
Slipp D. 톰슨

58

otool 사용 :

otool -TV your.dylib

또는

nm -g your.dylib

4
새로운 맥 OS에서 otool -T가 표시됩니다 otool: -T functionality obsolete사용 -t objdump를
joseph.smeng

그것은 사실이지만 otool -T보고서를 functionality obsolete새로운 OS X에서, 그것은 또한 (동적 라이브러리에 대한) 사실의 objdump -t보고The file was not recognized as a valid object file.
TML


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.