跟踪哪个函数需要给定的链接库

时间:2017-07-05 22:20:50

标签: linux shared-libraries dynamic-linking

我有一些在运行时路径中需要的链接库,我不确定他们为什么需要它们。我希望能够找到一种关于他们被调用的地方的追溯。

所以说我在myprogram.c中有一个main(语言不应该),它分别调用来自共享库libshared1.so和libshared2.so的函数func1()func2() 。从可执行文件中可以找到从libshared2.so加载func2()(/应该)的方法吗?

理想情况下,我正在寻找一个输入command ./myprogram的linux命令,并输出以下内容:

myprogram.c:1 func1() loaded from libshared1.so at ~/libshared1.so
myprogram.c:2 func2() from libshared2.so at ~/libraries/libshared2.so
myprogram.c:3 func1() loaded from libshared1.so at ~/libshared1.so

command ./myprogram libshared1.so给予:

libshared1.so used in myprogram in:
func1() (myprogram.c:1)
func1() (myprogram.c:3)

据我所知,ltrace,strace和ldd不提供此信息。

即使我忘记在路径中包含其中一个共享库,它仍然有效。

0 个答案:

没有答案