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

146

我一直在尝试在Mac OS X的XCode项目中使用动态库,但是至今没有成功。

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

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

4个回答

189

2
在 OS X Leopard(10.5,是的,我知道...)中,您应该使用 nm -gu,即 -u 选项为小写。 - András Aszódi
4
1个纳米人是自包含的,当命令行改变时也会继续工作 :p - MK.
11
@MK. man 1 nm列出了许多可以使用nm执行的任务。这仍然是一个外部资源,可以通过阅读来发现解决方案,但不是对所请求的“简单列出从dylib文件导出的符号的方法”的解决方案本身。而“nm -gU….dylib”则是解决方案。 - Slipp D. Thompson
对于 macOS 框架,如何使用:/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa - vaughan

66

使用otool工具:

otool -TV your.dylib

或者

nm -g your.dylib

5
在新的macOS系统中,otool -T命令将显示“otool:-T功能已过时”。请改用objdump -t命令。 - joseph.smeng
虽然在新版OS X中,otool -T报告功能已过时是真实的,但(对于动态库而言)objdump -t同样也会报告该文件无法被识别为有效对象文件。 - TML

16

使用nm -a your.dylib

将会打印出所有符号,包括全局符号


0

我很兴奋地学会了这个GUI,但在我加载dylib后它崩溃了。我正在使用macOS Mojave。 - chrisdembia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接