从用户编写的源文件到生成可执行程序,需要经过以下四个中间过程:
- 预处理:预处理过程主要处理源代码文件中的#include、#define、#if、#else、#ifdef、#endif等指令,以及处理注释、行号(用于调试)等工作。
- 编译:编译是构建可执行程序过程中最重要的步骤,涉及词法分析、语法分析、语义分析、源代码优化、代码生成和目标代码优化等。
- 汇编:汇编过程将编译生成的汇编代码转换为机器指令。
- 链接:链接过程将各个目标文件(包括汇编生成的目标文件和库文件)组合成一个可执行程序。
从源文件到可执行文件的过程:第一步:转换源代码:编译器编译器:将编程语言编写的源代码转换为本地代码的程序。编译完成的程序为.obj目标文件,内容是本地代码。但是还不能够运行。转换每种高级编程语言都需要其专有的编译器,例如C语言的C编译器。同种编程语言在不同CPU下的编译器也不同。编译器也是程序,因此也需要适合它的运行环境。因此,确定一个编译器的种类,需要确定哪种编程语言+哪种CPU+哪种运行环境。而实际上购买和下载时,通常指需要确定编译器产品名称+版本号即可。第二步:生成.EXE文件与启动:链接器经过编译器的编译,源文件已经被转换成了.obj目标文件。链接:将多个目标文件结合起来,生成一个.EXE可执行文件。链接器:运行链接的程序。库文件,即.lib文件,是指将多个目标文件集成保存在一个文件里的形式。标准函数:在库文件中收录的函数。在程序中,不通过源代码另行编写,而通过库文件提供的函数。如果主程序中使用了标准函数,在运行链接程序时,链接器就需要指定收录它的库文件,将库文件中需要的.obj目标文件(包含此标准函数)抽取出来,与其他目标文件共同生成一个.EXE可执行文件。在链接时,必须链接一个特殊的目标文件,它记述了同所有程序起始位置相结合的处理内容,成为程序的启动。