三类目标文件

  • 可重定位目标文件
    -其代码和数据可和其他可重定位文件合并为可执行文件
    . 每个.o文件由对应的.c文件生成
    . 每个.o文件代码和数据地址都从0开始
  • 可执行目标文件
    -包含的代码和数据可以被直接复制到内存中并执行
    -代码和数据地址为虚拟地址空间中的地址
  • 共享的目标文件
    -特殊的可重定位目标文件,能在装入或运行时被装入到内存并自动被链接,称为共享库文件。

目标文件的格式

  • 目标代码:指编译器和汇编器处理源代码后所生成的机器语言目标代码
  • 目标文件:指包含目标代码的文件
  • 最早的目标文件格式是自由格式,非标准的
  • 标准的几种目标文件格式
  • DOS操作系统(最简单):COM格式(*.com),文件中仅包含代码和数据,且被加载到内存的固定位置(不采用虚拟地址)
  • System V UNIX早期版本:COFF格式,文件中不仅包含代码和数据,还包含重定位信息,调式信息,符号表等其他信息,由一组严格定义的数据结构序列组成;
  • Windows: PE格式(COFF的变种),称为可移植可执行
  • Linux等类UNIX:ELF格式(COFF的变种),称为可执行可链接(Executable and Linkable Format)

    链接试图——可重定位目标文件

  • 可被链接(合并)生成可执行文件或共享目标文件

  • 静态链接库文件由若干个可重定位目标文件组成
  • 包含代码,数据(已初始化的全局变量和局部静态变量.data和未初始化的全局变量和局部静态变量.bss)
  • 包含重定位信息(指出哪些符号引用处需要重定位)
  • 文件扩展名为.o(相当于Windows中的.obj文件)
  • 为了进行链接,还需要其他许多信息,如符号表,重定位信息等许多其他的节

  • 这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值