有一个可执行文件动态链接到多个共享对象。如何确定某些符号(导入可执行文件)属于哪个?
如果有多种可能性,我可以将ld模仿并查看它的拍摄地点吗?
答案 0 :(得分:5)
答案 1 :(得分:5)
除了查理提到的那些,“ldd”可能会做一些你正在寻找的东西。
答案 2 :(得分:3)
如果您可以重新链接可执行文件,找到引用和定义来源的最简单方法是使用ld
-y
标志。例如:
$ cat t.c
int main() { printf("Hello\n"); return 0; }
$ gcc t.c -Wl,-yprintf
/lib/libc.so.6: definition of printf
如果您无法重新链接可执行文件,请在其上运行ldd
,然后对按顺序列出的所有库运行'nm -D'
,并为您感兴趣的符号运行grep
答案 3 :(得分:1)
$LD_DEBUG=bindings my_program
这将在控制台上打印所有符号绑定。