链接
就是将不同部分的代码和数据手机和组合成为一个单一文件的过程,这个文件可被加载到存储器并执行。
链接过程可以在如下时间执行:
- 编译时:在源代码翻译成机器代码时
- 加载时:程序被加载器加载到存储器并执行时
- 运行时:由应用程序去完成这个工作,OS提供系统调用接口
静态链接
以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。输入的可重定位目标文件由各种不同的代码和数据节组成。
其主要完成如下两个任务:
- 符号解析:目标文件定义和引用符号。将每个符号引用和一个符号定义联系起来。即为:将程序中出现的存储单元名字和真正的定义处联系起来,主要是作用域问题。
- 重定位:通过把每个符号定义和一个存储器位置联系起来,然后修改所有对这个符号的引用,使得他们指向这个存储器位置,从而从定位这些数据节。
目标文件
- 可重定位目标文件
- 可执行目标文件
- 共享目标文件