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

How to list dependencies of c/c++ static library?

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

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

objdump -p test.so

readelf -d test.so

我可以得到类似的东西

NEEDED libOne.so

NEEDED libc.so.6

但是对于静态库,我只能获取符号级别的依赖,例如,通过运行

objdump -T test.a

我会得到类似的东西:

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

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

00000000 DF UND 00000000 QFileInfo::fileName() const

但是我需要模块级别的信息,有人知道如何获取该信息吗?

静态库没有这样的依赖项列表。

静态库只不过是目标文件的存档。由于目标文件不知道它们依赖于哪些库,因此静态库也不知道。

@一些程序员是对的,但你可以做的是静态地使用这个库构建一个简单的程序,然后检查 ldd -v 依赖项是什么。