如何在.so文件中列出符号

如何列出从.so文件导出的符号?如果可能,我还想知道它们的来源(例如,它们是否从静态库中拉入)

我使用的是GCC4.0.2,如果有区别的话

列出符号的标准工具是nm,您可以这样简单地使用它:

nm-gD yourLib.so

如果你想看到C++库的符号,添加“-C”选项,它会使符号解散(它更容易读出来)。

nm-gDC yourLib.so

如果.so文件为elf格式,则有两个选项:

无论是objdump-C对于要求C++也很有用):

$objdump-TC libz.so
libz.so:文件格式elf64-x86-64
动态符号表:
000000000000 2010 l d.init 000000000000.init
0000000000000000 DF*UND*0000000000000000 GLIBC_2.2.5免费
0000000000000000 DF*UND*0000000000000000 GLIBC_2.2.5_____________位置
0000000000000000 w D*UND*0000000000000000_ITM_注销可克隆

或者使用readelf

$readelf-Ws libz.so
符号表“.dynsym”包含112个条目:
Num:值大小类型绑定到Ndx名称
0:0000000000000000 0不键入本地默认值
1:0000000000002010 0节本地默认值10
2:0000000000000000函数全局默认值[email protected]_2.2.5 (14)
3:0000000000000000函数全局默认值和错误号_loc[email protected]_2.2.5 (14)
4:0000000000000000不键入弱默认值和取消注册可克隆

发表评论