C程序编译过程详解
从 .c
文件到可执行程序需经历以下步骤:
1. 预处理(Preprocessing)
gcc -E process_demo.c -o process_demo.i
- 作用:处理宏定义(如
#define
)、头文件包含(如#include
)等。 - 输出:生成预处理后的
.i
文件,内容为展开后的C代码。
2. 编译(Compilation)
gcc -S process_demo.i -o process_demo.s
- 作用:将预处理后的代码转换为汇编代码。
- 输出:生成
.s
文件,内容为平台相关的汇编指令。
3. 汇编(Assembly)
gcc -c process_demo.s -o process_demo.o
- 作用:将汇编代码转换为机器码(二进制目标文件)。
- 输出:生成
.o
目标文件,包含机器指令和符号表。
4. 链接(Linking)
gcc process_demo.o -o process_demo
- 作用:将目标文件与库文件(如
libc
)链接,生成可执行文件。 - 输出:生成最终的可执行文件
process_demo
。
编译过程
- 预处理 → 编译 → 汇编 → 链接,四步生成可执行文件。