一、编译和链接
1、构建:IDE一般都将编译和链接的过程一步完成,通常将这种编译和链接合并到一起的过程称为构建;
2、程序从源代码到最终可执行文件一般分为4个步骤:预处理(processing)、编译(compilation)、汇编(assembly)、链接(linking);
1)预编译:编译器将源代码文件和相关头文件编译成一个.i文件;
预编译过程主要处理那些源代码文件中以#开始的预编译指令。如“#include”,“define”,主要处理规则如下:
a、将所有的“#define”删除,并且展开所有的宏定义;
b、处理所有条件预编译指令,将被包含的文件插入到该预编译指令的位置;
c、删除所有的“//”和"/* */”;
d、添加行号和文件名标识;
e、保留所有的#progma编译器指令,因为编译器需要使用它们;
2)编译:编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件,这个部分是整个程序构建的核心部分;
3)汇编:汇编就是汇编器将汇编代码转变成机器可执行的指令,每一个汇编语句几乎都对应一条机器指令;经过预编译、编译和汇编输入目标文件;
4)链接:输出可执行文件;
编译过程一般分为6步:扫描、语法分析、语义分析、源代码优化、代码生成和目标代码优化;
链接过程主要包括了地址和空间分配、符号决议和重定位;
最基本的静态链接过程:每个模块的源代码文件经过编译器编译成目标文件,目标文件和库(Library)一起链接形成最终可执行文件。而最常见的库就是运行时库(Runtime Librayr),他是支撑程序运行的基本函数的集合,库其实是一组目标文件的包,就是一些最常用的代码编译成目标文件后打包存放;
网友评论