如何列出从.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不键入弱默认值和取消注册可克隆