阶段 | 输入文件 | 输出文件 | 核心任务 | 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 |
无特殊选项 |