我想找到一些外部符号,由另一个共享库(.so)使用。我很容易就可以运行
nm -D ./lib_the_one.so
并通过grepping获取已使用符号的列表,例如'U'(未定义的符号):
U The_external_symbol
现在我想知道,在整个库“lib_the_one.so”中存在一些符号的用法(静态)。更确切地说,
例如,我想知道我的“lib_the_one.so”中有10个函数,其中有calloc
个调用,5个函数调用malloc
。
如何使用nm,objdump或任何其他util binutils(我的操作系统是Linux)?
答案 0 :(得分:0)
你可以在每个符号上使用objdump
和grep
,它应该给你一个符号被引用的次数,这里我从两个不同的函数中调用malloc
两次:
objdump -D test_prog | grep malloc
0000000000400928 <malloc@plt>:
400b91: e8 92 fd ff ff callq 400928 <malloc@plt>
400c9c: e8 87 fc ff ff callq 400928 <malloc@plt>
注意:忽略第一个是plt条目。