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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值