3
對於靜態庫(.a文件),如何列出它的模塊級依賴關係?如何列出c/C++靜態庫的依賴關係?
我知道一個共享庫(的.so),我們可以使用objdump的或readelf做到這一點:
objdump -p test.so
或
readelf -d test.so
我能得到這樣的
需要libOne.so
的必需libc.so.6的
但對於靜態庫,我只能得到符號級的依賴性,例如,通過運行
objdump -T test.a
我會得到一些東西像:
00000000 DF UND 00000000的QByteArray ::中期(INT,INT)常量
00000000 DF UND 00000000 QUrl :: fromEncoded(QByteArray中常量&)
00000000 DF UND 00000000 QFileInfo ::文件名()const的
但我需要在模塊級的信息,有誰知道如何獲得這些信息?
我想說的原因是,靜態庫不是**鏈接**。因此,到目前爲止,構建鏈中沒有人負責將這些信息添加到其中。 –
@JanSmrč[email protected]程序員哥們但是如何在不知道信息的情況下生成靜態庫?例如,庫A使用另一個庫B中定義的函數。如果我們不添加類似'#include「B.h」'的函數,A可以生成嗎?在這種情況下,我們可以說A取決於B嗎? – bagebb
@bagebb就像其他任何對象文件一樣。用來創建靜態庫的'ar'命令是一個簡單而非常簡單的* ARchiver *。對於靜態庫,您需要跟蹤依賴關係,並明確鏈接它們。鏈接器無能爲力,它所做的基本上就是提取目標文件並與它們鏈接。 –