我有一个可执行文件,它调用一个函数。有很多静态库和动态库与这个 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
关于linux - 如何知道哪个库函数位于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40743366/