假设我们有一个名为libtest.so的共享库,它里面有一个名为"foo"的函数。
使用strip命令来丢弃libtest.so中所有的符号。
$strip libtest.so
所以,现在如果我们使用:
$nm libtest.so
它将打印出:
nm: libtest.so: no symbols
但是如果我们使用:
$readelf -s libtest.so
从它的结果中仍然可以看到foo函数:
...
10: 000005dc 5 FUNC GLOBAL DEFAULT 12 _Z3foov
...
我们也可以使用命令字符串来检查它:
$strings libtest.so
_Z3foov
...
我有一个问题,为什么使用nm命令在剥离了符号表的libtest.so上没有结果?
谢谢
readelf -s
和readelf -S
之间有区别。最好单独提出一个问题来问。 - Employed Russian