一、预编译
1、处理所有注释,以空格代替
2、删除所有#define,并展开所有的宏定义
3、处理条件编译#if,#ifdef,#elif,#else,#endif
4、处理#include,展开被包含的文件
5、保留编译器需要使用的#pragrama指令
gcc -E file.c -O file.i 或 gcc -E file.c
二、编译(Compilation):
1、翻译成汇编,对预处理文件进行
词法分析:分析关键字,标示符,立即数是否合法
语法分析:分析表达式是否遵循语法规则
语义分析:分析表达式语义内容
2、分析结束后进行代码优化生产汇编文件
gcc -S file.c -o file.s
三、汇编(Assembly)
1、将汇编代码转变为机器可执行的指令
gcc -c file.s -o file.o
四、链接(Linking)
1、将file.o与C标准输入输出库进行连接,最终生成可执行文件file,可直接在命令行运行./file
gcc file.o -o file