了解一個庫如何透過另一個連結庫連結到二進位文件

了解一個庫如何透過另一個連結庫連結到二進位文件

假設我有一個二進位文件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- 這將詳細地指示依賴鏈。

相關內容