我如何列出从一个.so文件导出的符号?如果可能的话,我还想知道它们的来源(例如,如果它们是从静态库中提取的)。
我使用的是gcc 4.0.2,如果有区别的话。
我如何列出从一个.so文件导出的符号?如果可能的话,我还想知道它们的来源(例如,如果它们是从静态库中提取的)。
我使用的是gcc 4.0.2,如果有区别的话。
当前回答
objdump -TC /usr/lib/libexample.so
其他回答
对于共享库libNAME。所以-D开关是必要的,以查看符号在我的Linux
nm -D libNAME.so
并为静态库如别人所报道
nm -g libNAME.a
对于Android .so文件,NDK工具链附带了其他答案中提到的所需工具:readelf, objdump和nm。
objdump -TC /usr/lib/libexample.so
尝试在nm标志中添加-l,以获得每个符号的源。如果库是用调试信息(gcc -g)编译的,这应该是源文件和行号。正如Konrad所说,在这一点上,对象文件/静态库可能是未知的。
您可以使用binutils工具链中的nm -g工具。然而,它们的来源并不总是现成的。我甚至不确定这些信息是否总能被检索到。也许objcopy揭示了更多的信息。
/EDIT:这个工具的名字当然是nm。标志-g只用于显示导出的符号。