在多道程序环境中,要想将用户源代码变成一个可以内存中执行的程序,通常分为三个步骤:编译、链接、载入。
1)编译:将预处理生成的文件,经过语法分析、词法分析、语义分析以及优化后编译成若干个目标模块。可以理解为高级语言翻译为计算机可以理解的二进制代码,即机器语言。
2)链接:由链接程序将编译后形成的一组目标模块以及它们需要的库函数链接在一起,形成一个完整的载入模型。链接主要解决模块间的相互引用的问题,分为地址和空间分配,符号解析和重定位几个步骤。在编译阶段生成目标文件时,会暂时搁置那些外部引用,而这些外部引用就是在链接时确定的,链接器在链接时会根据符号名称去相应模块中寻找对应符号。
3)载入:由载入程序将载入模块载入内存。
以C/C++语言为例,把源文件编译成代码文件,在windows下面为.obj文件,在unix、Linux下面就是.o文件,