一、预编译
处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
编辑就是对代码的编写,按照c语言规则,编写完成一定功能的代码。编译就是对代码进行编译,让代码从高级语言编译成可以让电脑识别运算的机器码。
连接就是对代码各个函数等进行,连接
运行就是运行所编辑代码组成的程序。
1编辑:
就是写代码或修改代码,制作C语言的源文件和头文件。
2
编译:是由编译程序将C语言源文件转换成二进制中间文件,在这一步中,会对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。
3
链接:将2中生成的中间文件组合成二进制可执行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。
4
执行:
运行可执行文件,这一步是编写代码的最终目的。
以上四步每步均依赖于上一步,这是一个逐步由高级语言(C语言)到机器语言(可执行文件)转化的过程。广义的编译,包含编译链接两个部分。