假设我们有libtest.so命名的共享库中,有一个“foo”函数在它纳米与“readelf -s”
使用条从丢弃所有符号libtest.so
$strip libtest.so
所以,现在如果我们使用:
$nm libtest.so
它会打印出:
处:libtest.so:无符号
,但是如果我们使用:
$readelf -s libtest.so
富功能仍然可以从它的结果中可以看出:
...
10:000005dc 5 FUNC全局默认12 _Z3foov
...
,我们还可以使用命令字符串来检查它:
$strings libtest.so
...
_Z3foov
...
这里是我的问题,为什么nm的给出了条纹libtest.so没有结果?
感谢
您的用户名太棒了。 因此,基本上,如果我在编译时将静态库链接到二进制文件,库的符号将以nm显示,但如果我进行动态链接,这些符号将显示在readelf -S和nm -D中,是正确的吗? – acib708 2015-02-18 15:33:41
@AlejandroCárdenas我不相信你的理解是完全正确的。另外,'readelf -s'和'readelf -S'有区别。问一个单独的问题可能会更好。 – 2015-02-18 17:12:00
是的,对不起,我的意思是readelf -s。那么,核心问题仍然存在,我不明白nm和readelf -s之间的区别,因为你告诉我我理解的是不正确的。你愿意详细说明一下吗? – acib708 2015-02-18 21:37:52