C语言下的 编译过程
基于Linux GCC
看起来是一步,其实是分四部分
1.三大预处理(预处理阶段)
1)文件包含 #include <stdio.h>
2)条件编译 #if
3)宏展开(宏替换)define maxSIZE 1000 (#define 标识符 字符串)
用GCC内置的CPP编译器对.c文件进行预处理
用头文件的内容代替#include <...>这个语句
stdio.h文件也一样,所以预处理后的文件要比原来的大很多
2.编译阶段
这也是工程量最大的一个阶段
把原来代码一一编译成汇编语言
3.汇编阶段
把汇编语言编译成处理器可以看懂并且解释的机器代码,生成二进制可重定向ELF格式文件,扩展名为.o
4.链接
因为一个程序有许多.c文件组成,还需要用到很多库,所以这个时候就要把各个库文件和.c文件编译出来的.o文件链接起来,形成可执行文件,.out为
上面四个过程也可以用基于GUN编译工具链的其他工具完成,如果一键用GCC的话,GCC自动调用这些工具
cpp(预处理)
as(汇编)
ld(链接)