静态库的内容
我有一个静态库,例如mystaticlib.a
。我想查看它的内容,例如其中的目标文件数量。
我怎样才能在海湾合作委员会上做到这一点?
I have a static library, say mystaticlib.a
. I want to see its contents, such as the number of object files inside it.
How can I do this on gcc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我刚刚发现您可以使用 readelf -a 来显示静态库中所有目标文件的内容。
像这样调用 readelf 命令:
$ readelf -a mystaticlib.a
。I just discovered that you can use
readelf -a
to display the contents of all the object files in a static library.Invoke the readelf command like this:
$ readelf -a mystaticlib.a
.它只是偶然发现了这一点:
您可以使用 7zip 打开存档 (.a)。
也适用于存档中的目标文件。
列出各种内容,例如
.text、.bss、
等及其偏移量、长度、类型
...此外,还可以使用十六进制编辑器或记事本++来解压所有内容,以查看内容。
我使用使用
GNUToolsARMEmbedded\2018-q4-major\bin\arm-none-eabi-
Toolchain 创建的存档对此进行了测试和
7Zip 16.04(64位)
It just stumbled over this:
You can open an archive (.a) with 7zip.
Also works for the object files in the archive.
Listing all sorts of contents like
.text, .bss, .data,
etc. with theiroffset, length, type,
...Furthermore its possible to unpack all, using a hex editor or notepad++ to view the contents.
I tested this with an archive created with
GNUToolsARMEmbedded\2018-q4-major\bin\arm-none-eabi-
Toolchainand
7Zip 16.04 (64-bit)
在 Mac 上,只需使用
Mac 版本的 nm 没有
-C
选项。On a Mac, simply use
There is no
-C
option with the Mac version of nm.您可以使用
nm
查看内容(其中的 .o 文件)和定义的符号。如果其中包含 C++ 代码,您应该使用-C
选项来解析符号名称:You can see the contents (the .o files that went into it) and the defined symbols by using
nm
. If this contains C++ code you should use the-C
option to demangle the symbol names:在 gcc 上,使用 ar -t 。
gnu archiver (ar) 的
-t
选项写入归档到标准输出的目录。只有文件操作数指定的文件才应包含在写入列表中。如果未指定文件操作数,则归档中的所有文件均应按归档顺序包含。更多信息请参见此处。
On gcc, use
ar -t
.-t
option of the gnu archiver (ar) writes a table of contents of archive to the standard output. Only the files specified by the file operands shall be included in the written list. If no file operands are specified, all files in archive shall be included in the order of the archive.More info here.