【发布时间】:2011-04-15 00:00:59
【问题描述】:
我有一个静态库,比如mystaticlib.a。我想看看它的内容,比如里面有多少个目标文件。
如何在 gcc 上做到这一点?
【问题讨论】:
-
有没有办法在python中做到这一点?
标签: c++ c gcc static-libraries object-files
我有一个静态库,比如mystaticlib.a。我想看看它的内容,比如里面有多少个目标文件。
如何在 gcc 上做到这一点?
【问题讨论】:
标签: c++ c gcc static-libraries object-files
在 gcc 上,使用 ar -t。
gnu archiver (ar) 的-t 选项将归档目录写入标准输出。只有文件操作数指定的文件才应包含在书面列表中。如果未指定文件操作数,则归档中的所有文件都应按归档顺序包含。
【讨论】:
您可以使用nm 查看内容(进入其中的 .o 文件)和定义的符号。如果这包含 C++ 代码,您应该使用 -C 选项来解开符号名称:
nm -C libschnoeck.a | less
【讨论】:
在 Mac 上,只需使用
nm libschnoeck.a | less
Mac 版 nm 没有-C 选项。
【讨论】:
它只是偶然发现了这个:
您可以使用 7zip 打开存档 (.a)。
也适用于存档中的目标文件。
用他们的offset, length, type, 列出各种内容,如.text, .bss, .data, 等...
此外,可以使用十六进制编辑器或记事本++来查看所有内容。
我使用GNUToolsARMEmbedded\2018-q4-major\bin\arm-none-eabi- Toolchain 创建的存档对此进行了测试
和7Zip 16.04 (64-bit)
【讨论】:
我刚刚发现你可以使用readelf -a 来显示静态库中所有目标文件的内容。
像这样调用 readelf 命令:$ readelf -a mystaticlib.a。
【讨论】: