计算机系统第七章链接复习笔记

计算机系统第七章:链接

链接的概念:将各种代码和数据片段收集并组合成为一个单一文件的过程·,这个文件可被加载(复制)到内存并执行。
链接是由叫做连接器的程序自动执行的。

7.1 编译器驱动程序

大多数编译系统提供编译器驱动程序,它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。
main.c–>main.i–>main.s–>main.o

7.2静态链接

为了构造可执行文件,链接器必须完成的主要任务:
1.符号解析,目的是将每个符号引用正好和一个符号定义关联起来。
2.重定位。

7.3目标文件

三种形式:
1.可重定位目标文件
2.可执行目标文件
3.共享目标文件

7.4可重定位目标文件

7.5符号和符号表

三种不同的符号:
1.由模块m定义并能被其他模块引用的全局符号
2.由其他模块定义并被模块m引用的全局符号
3.只能模块m定义和引用的局部符号

7.6符号解析

Linux连接器处理多重定义的符号名的规则:
1.不允许有多个同名的强符号
2.如果有一个强符号和多个弱符号同名,那么选择强符号
3.如果有多个弱符号同名,那么从这些弱符号中任选一个

笔记总结

1.尽量少定义全局变量,规则1、2会坑你,定义了全局最好要初始化
2.库文件要放在命令行的最后面
3.symtab:符号表,存放程序中定义和引用的函数和全局变量信息,不包含局部变量条目。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值