如何知道哪个库函数所在?

时间:2016-11-22 13:40:20

标签: linux

我有一个可执行文件,它调用一个函数。有许多与此exe链接的静态和动态库。我需要知道哪一个提供这个功能。

1 个答案:

答案 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