Suppose we have a shared library named libtest.so, there is one function "foo" in it

use the strip to discards all symbols from libtest.so

$strip libtest.so

so ,now if we use:

$nm libtest.so

it will print out:

nm: libtest.so: no symbols

but if we use :

$readelf -s libtest.so 

foo function still can be seen from its result:

...

10: 000005dc 5 FUNC GLOBAL DEFAULT 12 _Z3foov

...

we also can use command strings to check it:

$strings libtest.so

...

_Z3foov

...

here is my question ,why nm give no result for striped libtest.so?

Thanks

Edit
Report