编译过程
编译过程分为四步:预处理、编译、汇编、连接

1. 预处理
预处理主要处理源文件中的“#include”、“#define”等预处理等命令
预处理主要完成的工作有(参考:《程序员的自我修养》):
(1) 删除 #define,展开宏
(2) 处理条件编译指令。预处理程序先判断条件,再根据条件修改源代码
(3) 删除注释
(4) 添加行号,以及文件名标识。便于调试
(5) 删除“#include”,插入相应的头文件
使用gcc -E main.c -o main.i 命令,预处理后得到main.i 文件

2. 编译
生成汇编代码的过程。
使用gcc -S main.i -o main.s 命令,编译后得到main.s 文件


3. 汇编
将汇编代码转化成 机器指令。
使用gcc -c main.c -o main.o 命令,得到目标文件main.o


4. 连接
通过连接库文件,将目标文件转化成可执行文件。
使用命令 gcc -ld
一般情况下,我们直接使用gcc main.c -o main就可以生成可执行程序了。
当然,在Windows下使用gcc时,生成的可执行文件不再是main.out ,而是main.exe文件