用于大小分析的 GCC 工具?

GCC tool for size analysis?

我使用 GCC (arm-none-eabi-gcc) 为嵌入式平台开发。对于尺寸分析,我使用:arm-none-eabi-size 和 .map 文件。

因为我的代码大小有问题,所以我的问题是:有没有更强大的大小分析工具?有统计数据或文件大小吗?或者可以按大小排序函数?

欢迎提出任何建议。

您可以为此目的使用 MELT 自定义 GCC。

xtramelt-ana-simple.melt 文件中的 justcountipa 传递正在做类似的事情(计算函数中的 Gimple 指令)

您可以使用 arm-none-eabi-objdump -t Application.elf。它将显示所有函数和全局变量的大小(十六进制数)。

address    type section size     name
------------------------------------------------
0000d600 l     F .text  00000198 uip_arp_update

全局变量在 .bss 部分,函数在 .text 部分,常量数据在 .data 部分。

您还可以在适当的目录中使用 arm-none-eabi-size *.o 查看所有中间文件的大小。

也可以使用nm工具

arm-none-eabi-nm -t d -S --size-sort Application.elf


使用 -ffunction-sections -fdata-sections 作为编译参数和 -Wl,--gc-sections 作为链接器参数也很有用,这样它会从二进制文件中删除所有未使用的函数和数据。