找出一个库如何通过另一个链接库链接到二进制文件

找出一个库如何通过另一个链接库链接到二进制文件

假设我有一个二进制文件test,它使用共享库

a.so
b.so
c.so

我无法运行二进制文件,因为其中一个链接库链接了另一个d.so似乎是罪魁祸首的库。但是我不知道哪个库是链接它的,因为实际上有 20 个库而不是 3 个,而且浏览所有库非常耗时。ldd仅为您提供二进制文件直接链接的库列表。

除此之外,似乎间接层级不止一层,而是好几层。换句话说,似乎存在类似的东西a.so -> x.so -> blabla.so -> d.so

是否有一些聪明的方法来可视化整个依赖关系图或如何找到通向库的确切依赖链d.so

换句话说,我想要的是这样的:

a.so -> something.so
     -> second.so
     -> third.so
b.so -> x.so -> blabla.so -> d.so
             -> stuff.so
c.so -> something.else -> yetanotherlib.so

或者一个简化版本,我会说我想找到它d.so是如何链接到二进制文件的,它会吐出

a.so -> x.so -> blabla.so -> d.so

我希望这是有道理的。

答案1

你想要的是ldd -v——这将详细地表明依赖链。

相关内容