C语言目标文件概述 (Object File)

C程序的编译过程结束后,会为每个c文件生成一个对应的目标文件。


目标文件由一系列的section组成,最常见的section包括:

  • .text:存放代码
  • .data:存放初始化过的数据
  • .bss:存放未初始化的数据
  • 其他一些更特殊的section,例如存放调试信息的section
  • 等等

在链接过程,会将各个目标文件的.text都拼在一起,.data都拼在一起,.bss都拼在一起… 最终生成一个可执行文件,该可执行文件也包含.text, .data, .bss等section。

在这里插入图片描述


目标文件中每个section和指令的地址都是相对与0的偏移,因为具体放到内存中何处在编译时并不知道,是链接阶段才能确定的。


我们知道一个程序在运行时的内存包括堆和栈,这两者完全是在运行时期决定的,而不受目标文件的影响。


目标文件的格式平台相关的,例如Linux平台上目标文件的格式主要是ELF,而Windows上则是PE/COFF

猜你喜欢

转载自blog.csdn.net/qq_29328443/article/details/107183383