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

Ger*_*ald 116 macos dylib

所以我一直在尝试让动态库在我的Mac OS X下的XCode项目中工作.到目前为止,没有任何乐趣.

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

所以我想知道是否有一种简单的方法来列出从dylib文件导出的符号.任何想法都会很棒.

MK.*_*MK. 140

男人1纳米

https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/nm.1.html

例如:

nm -gU /usr/local/Cellar/cairo/1.12.16/lib/cairo/libcairo-trace.0.dylib
Run Code Online (Sandbox Code Playgroud)

  • @MK.`man 1 nm`列出了很多可以用nm做的事情.同样,它是一个外部资源,人们可以通过它来发现解决方案,但不是解决方案本身所需的_"列出从dylib文件导出的符号的简单方法"_​​.然而,"`nm -gU ... .dylib`". (8认同)
  • man 1 nm是自包含的,并且在命令行更改时将继续工作:p (4认同)
  • 在OS X Leopard(10.5,是的,我知道...)下,您应该使用`nm -gu`,即-u选项是小写的。 (2认同)

lin*_*ild 55

使用otool:

otool -TV your.dylib
Run Code Online (Sandbox Code Playgroud)

要么

nm -g your.dylib
Run Code Online (Sandbox Code Playgroud)

  • 在新的macOS上,otool -T将显示`otool:-T功能已过时'使用objdump -t (2认同)

小智 13

使用 nm -a your.dylib

它将打印包括全局变量在内的所有符号