我需要一种方法来分析我的GCC编译器的输出文件。我正在编制裸机,我非常关心尺寸。我可以使用交叉编译器提供的arm-none-eabi-objdump
但是如果存在用于此任务的工具,则解析输出不是我想要做的事情。你知道这样的工具存在吗?我的搜索没有结果。
还有一件事,我自己的代码中的每个函数都在它自己的部分中。
答案 0 :(得分:47)
您可以使用nm
和size
来获取函数和ELF部分的大小。
获取函数(以及具有静态存储持续时间的对象)的大小:
$ nm --print-size --size-sort --radix=d tst.o
第二列显示函数和对象的十进制大小。
获取部分的大小:
$ size -A -d tst.o
第二列显示各部分的十进制大小。
答案 1 :(得分:7)
readelf实用程序可以方便地显示各种部分信息,包括部分大小,例如:
arm-none-eabi-readelf -e foo.o
如果您对运行时内存占用感兴趣,可以忽略那些没有' A' (分配)标志集。
答案 2 :(得分:0)
puncover
使用objdump
和其他一些gcc工具生成html页面,您可以轻松浏览这些页面以确定代码和数据空间的去向。
它比gcc工具的文本输出要好得多。