如何列出c/c ++静态库的依赖关系?

bag*_*ebb 10 linux shared-libraries static-libraries

对于静态库(.a文件),如何列出它的模块级依赖项?

我知道对于共享库(.so),我们可以使用objdumpreadelf来执行此操作:

objdump -p test.so
Run Code Online (Sandbox Code Playgroud)

要么

readelf -d test.so
Run Code Online (Sandbox Code Playgroud)

我可以得到类似的东西

需要libOne.so

需要libc.so.6

但对于静态库,我只能通过运行获得符号级别的依赖项

objdump -T test.a
Run Code Online (Sandbox Code Playgroud)

我会得到一些像:

00000000 DF UND 00000000 QByteArray :: mid(int,int)const

00000000 DF UND 00000000 QUrl :: fromEncoded(QByteArray const&)

00000000 DF UND 00000000 QFileInfo :: fileName()const

但是我需要模块级的信息,有谁知道如何获取这些信息?

Som*_*ude 14

静态库依赖关系没有这样的名单.

静态库只不过是目标文件的存档.由于目标文件不知道它们所依赖的库,静态库也不知道.

  • 我想说的原因是静态库没有“链接”。因此,到目前为止,构建链中没有人负责向其中添加此类信息。 (2认同)