0
我有一个可执行文件,它调用一个函数。有很多静态和动态库与这个EXE链接。我需要知道哪一个提供这个功能。如何知道库函数在哪个位置?
我有一个可执行文件,它调用一个函数。有很多静态和动态库与这个EXE链接。我需要知道哪一个提供这个功能。如何知道库函数在哪个位置?
你可以使用可执行FOO这样的共享库的列表:
ldd -v foo
这篇文章:
How do I list the symbols in a .so file
说明如何列出一个符号(导出函数)共享库。
nm -C foo
同样的命令也将列出所有导出符号的名称(函数名):
如果你的库是静态连接的,它会在可执行文件本身内部的符号列表中显示出来一个静态库:
nm -C libasan.a
你可能想要构建一个shell脚本来枚举你的库,寻找你想要的每个内部的特定函数。例如,要确定哪个.a文件提供了sprintf():
for x in *.a; do echo --- ${x} ---; nm -C $x | grep sprintf ; done