我有一些在运行时路径中需要的链接库,我不确定他们为什么需要它们。我希望能够找到一种关于他们被调用的地方的追溯。
所以说我在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不提供此信息。
即使我忘记在路径中包含其中一个共享库,它仍然有效。