-
链接
-
定义
将不同部分的代码和数据,收集和组合成为一个单一文件的过程。这个文件可以被加载或拷贝到存储器并执行。
-
发生时刻
(1) 编译(compile time)
源代码被翻译成机器代码
(2) 加载(load time)
程序被加载器load到存储器并执行时
(3) 运行(run time)
应用程序执行
-
链接由链接器(linker)的程序完成,作用是分离编译,把每个模块单独进行编译,然后再链接在一起
-
-
编译器驱动程序
-
编译器驱动程序包括:
(1) 预处理器
(2) 编译器
(3) 汇编器
(4) 链接器
-
示例
现在有两个c文件: main.c 和 swap.c, main.c中有 main() 函数,调用swap.c中的 swap() 函数
在 shell 下输入:
> gcc -02 -g -o p main.c swap.c
过程:
(1) main.c ---- c预处理器 ----> main.i main.i 是一个ASCII码的中间文件 (2) main.i ---- c编译器(ccl) ----> main.s main.s 是一个ASCII码的汇编文件 (3) main.s ---- 汇编器(as) ----> main.o main.o 是一个可重定位目标文件 同理, swap.c经过上述三个预处理、编译、汇编过程,也得到了 swap.o 目标文件 (4) main.o + swap.o ---- 链接器(ld) ----> p p 是一个可执行文件
当在 shell 下输入 > ./p 时,shell 会调用 os 中的加载器函数,把 p 的代码和数据拷贝到存储器,然后将控制转移到程序的开头
-
chapter07_链接
最新推荐文章于 2022-12-25 17:41:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)