深入理解计算机系统 第七章:链接

链接(static & dynamic)

具体实现方法见《深入理解计算机系统 第三版》 仅仅整理一些思路

静态连接

连接器的任务
  • 符号解析
  • 重定位:汇编器生成的代码和数据节都是从地址0开始,需要将每个符号定义与一个内存位置管理,从而重定位 这些节,并修改对这些符号的引用。
三种目标文件:
  • 可重定位目标文件:与其他可重定位目标文件结合,创建一个可执行文件
  • 可执行目标文件
  • 共享目标文件
可重定位文件格式

在这里插入图片描述

部分说明:

.rodata 只读数据 .symtab 符号表

.rel.text 一个.text节的位置列表,组合时需要修改

.rel.data 被模块引用或定义的所有全局变量重定位信息

符号与符号表

符号表包含该文件(m)定义和引用的符号信息

  • m定义的呗其他模块引用的全局符号
  • 其他模块定义被m引用的全局符号
  • 只被m定义和引用的全局符号 带static的全局变量和函数

attention:不包含本地非静态的符号,这些在栈中管理<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值