| 阶段 | 输入文件 | 输出文件 | 核心任务 | GCC命令示例 |
|---|---|---|---|---|
| 预处理 | .c源文件 |
.i文本文件 |
展开宏/头文件,处理#指令,删除注释 |
gcc -E hello.c -o hello.i |
| 编译 | .i文件 |
.s汇编文件 |
语法分析,代码优化,生成平台汇编代码 | gcc -S hello.i -o hello.s |
| 汇编 | .s汇编文件 |
.o目标文件 |
汇编指令→机器码,生成二进制目标文件 | gcc -c hello.s -o hello.o |
| 链接 | .o目标文件 |
可执行文件 | 合并目标文件+库,解析符号,地址重定位 | gcc hello.o -o hello |
| 特性 | 预处理 | 编译 | 汇编 | 链接 |
|---|---|---|---|---|
| 操作对象 | 源代码文本 | 中间代码 | 汇编指令 | 二进制机器码 |
| 文件类型 | 纯文本 | 文本(汇编) | 二进制 | 二进制 |
| 核心转换 | 文本替换 | 高级→低级语言 | 助记符→机器码 | 地址绑定 |
| 依赖处理 | 头文件展开 | 语法检查 | 符号表生成 | 库函数解析 |
| GCC选项 | -E |
-S |
-c |
无特殊选项 |