C语言编译器的作用是将源代码(.c)转换为可执行程序(.exe),过程如下:
-
预处理: 在这一阶段,预处理器处理源代码中的预处理指令,例如#include和#define。预处理器会将#include指令所引用的头文件内容插入到源代码中。(就是一个复制粘贴工作)
-
编译: 在编译阶段,编译器将预处理后的代码转换为汇编语言。这个过程可以分为几个步骤:
词法分析,语法分析,语义分析,中间代码生成(代码优化就在这一步) -
汇编: 在汇编阶段,汇编器将编译后的代码转换为机器语言的目标文件。(.obj文件)
-
链接: 在链接阶段,链接器将所有的目标文件和库文件组合在一起,生成一个可执行文件。(.exe文件)
-
运行: 可执行文件被加载到内存并执行。在运行时,操作系统加载必要的动态库,并初始化全局变量等。
下面一张图看懂整个过程: