- 编译过程,将程序翻译成CPU能够识别和运行的二进制机器指令的过程。
- 从源程序到二进制文件的过程,很有意思
- 一个可执行文件中的每一个section都有一个section header,将这些section headers集中放到一起,就是section header table,翻译成中文就是节头表。section header描述各个section的名称、类型、起始地址、大小等信息。程序运行时,加载器会根据ELF header来获取可执行文件信息。
- 未初始化的全局变量和静态变量会放置在BSS段中,但是因为它们未初始化,默认值全部是0,其实没有必要再单独开辟空间存储,为了节省存储空间,所以在可执行文件中BSS段是不占用空间的。但是BSS段的大小、起始地址和各个变量的地址信息会分别保存在节头表section header table和符号表.symtab里,当程序运行时,加载器会根据这些信息在内存中紧挨着数据段的后面为BSS段开辟一片存储空间,为各个变量分配存储单元。
《嵌入式C语言自我修养》第四章笔记
于 2024-01-11 20:47:03 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)