我有一个可执行文件,它调用一个函数。有许多与此exe链接的静态和动态库。我需要知道哪一个提供这个功能。
答案 0 :(得分:0)
您可以获得可执行文件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