如何列出目标文件中静态声明的大小?

时间:2011-07-12 17:55:38

标签: c gcc mingw

我正在尝试通过查找所有大型静态声明的数组来减小可执行文件的大小(使用MINGW / GCC)。有没有办法转储数据符号列表及其聚合大小?我看过nm和objdump的手册页,但到目前为止看不到任何有用的东西。

THX。

2 个答案:

答案 0 :(得分:7)

使用nm中的GNU binutils实用程序和--print-size选项(缩写为-S)。例如,要查找目标文件中的20个最大符号,请执行以下操作:

nm --print-size --size-sort objfile.o | tail -20

答案 1 :(得分:3)

链接器可以生成一个MAP文件,用于提供该信息。

如果使用gcc进行编译和链接,则使用以下命令将链接器选项传递给链接器:

-Wl,<comma-separate-options-list>

如果直接调用ld,显然只需传递链接器选项。

您需要的链接器选项是:

-Map=<mapfilename>

您也可以使用--cref在地图文件中包含交叉引用表。