前提知识:
将一个用户源程序变成可以在内存中执行的程序,需要进行以下三步:
——编译:由编译程序将用户源代码编译为若干个目标模板。
——链接:由链接程序将编译之后的目标模板以及它们所需要的库函数链接在一起,形成一个装入模板。
——装入:由装入程序将装入模板装入内存。
一、程序的链接(三种方式):
①静态链接方式——在程序运行以前,将各个目标模块及它们所需要的库函数,链接成一个完整的装入模块,又可称为可执行文件,通常不再拆开。
使用该方法需要解决两个问题:
-
问题一:对于目标模板中的相对位置进行修改。在编译程序所产生的的所有的目标模板中,使用的都是相对于本模板起始地址0的相对地址。在连接成为一个装入模板之后,需要把地址更改为相对于装入模板起始地址0的新的相对地址。
- 问题二:变换目标模板中外部调用符号。将每个目标模板中所用的外部调用符号也都变换为相对于装入模板起始地址0的相对地址。