如何列出 c/c++ 静态库的依赖项?
How to list dependencies of c/c++ static library?
对于一个静态库(.a文件),如何列出它的模块级依赖?
我知道对于共享库 (.so),我们可以使用 objdump 或 readelf 来执行此操作:
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
依赖项是什么。
对于一个静态库(.a文件),如何列出它的模块级依赖?
我知道对于共享库 (.so),我们可以使用 objdump 或 readelf 来执行此操作:
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
依赖项是什么。