如何打印从动态库导出的符号列表


120

因此,我一直在尝试让动态库在Mac OS X下的XCode项目中工作。

我能够加载dylib文件,但是当我调用dlsym获取函数指针时,它返回0,而dlerror表示未找到符号。

因此,我想知道是否有一种简单的方法来列出从dylib文件导出的符号。任何想法都很棒。

Answers:


152

男子1海里

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是自包含的,当命令行更改时将继续工作:p
MK。

9
@MK。man 1 nm列出了nm可以做的很多事情。同样,它是一种可以读取以发现解决方案的外部资源,而不是所请求的解决方案本身,即“列出从dylib文件导出的符号的简单方法”nm -gU ….dylib但是,“ ”是。
Slipp D. Thompson

58

使用otool

otool -TV your.dylib

要么

nm -g your.dylib

4
在新的macOS上,otool -T将显示otool: -T functionality obsolete使用objdump -t
joseph.smeng,2017年

虽然确实是在较新的OS X 中进行otool -T报告functionality obsolete,但(对于动态库)objdump -t也将进行报告The file was not recognized as a valid object file.
TML


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.