用于大小分析的 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
作为链接器参数也很有用,这样它会从二进制文件中删除所有未使用的函数和数据。
我使用 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
作为链接器参数也很有用,这样它会从二进制文件中删除所有未使用的函数和数据。