linux - 如何知道哪个库函数位于?

标签 linux

我有一个可执行文件,它调用一个函数。有很多静态库和动态库与这个 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/

相关文章:

linux - AWS 公共(public) IP 地址是按网络接口(interface)还是按 EC2 实例颁发的?

android - 在android终端中遇到一个bug

linux - MinGW 上的 libbfd 缺少哪些库

linux - 搜索票务系统、建议

php - 对操作系统进行编程以执行文件

linux - 如何指定宽度参数的位置?

linux - shell脚本错误: "[: too many arguments"

linux - 在 Linux 上调用带有时间偏移的程序

linux - 使用 new 创建 Qt QApplication 时出现段错误

Linux SCTP 实现现状