GCC编译之后的代码信息

Posted archerwuaiot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCC编译之后的代码信息相关的知识,希望对你有一定的参考价值。

arm-none-eabi-gcc编译之后会显示一些信息,比如
技术图片

下面就来说受每个字段的含义以及它们与bin文件大小的关系。
text区是代码区,就是程序编译之后源码的区域,在烧录之后一直位于Flash ROM中。


data和bss都是指的全局变量以及函数内static的变量,区别是data是有初始值的而bss没有。
data的初始值同样存在Rom里,当单片机启动的时候data的初始值会被加载到内存的相应位置,而bss则在启动的时候被置零。(这部分可以参考startup_stm32.s)


dec是text+data+bss的大小,hex就是dec转成16进制的值,并不是ROM占用哦,实际的比这个少。


所以最后bin文件的大小是text+data区域的大小,去看看STM32_PD.bin的大小,发现正好是9.32 KB (9,548 bytes),这些东西是要被写入单片机的ROM的。

以上是关于GCC编译之后的代码信息的主要内容,如果未能解决你的问题,请参考以下文章

是否有 GCC 编译指示可以覆盖某些代码段的调试信息 (-g) 的生成?

gcc 编译生成外部调试语法文件

(Linux)gcc进行优化编译的参数是啥?

gcc编译选项-Wextra(启用额外的警告信息,提高代码质量和安全性)

把GCC的编译信息重定向到一个文件

在Linux下用gcc编译hello world