分步编译是指将源代码的编译过程分解成多个阶段,分别进行每个阶段的操作,这样可以更好地调试和优化每个步骤。GCC 提供了多个选项来控制编译的各个阶段,常见的有预处理、编译、汇编和链接等步骤。通过这些选项,你可以逐步查看每个阶段的输出,方便调试和优化。
分步编译的常见步骤和命令
1. 预处理阶段 (Preprocessing)
预处理是编译的第一步,它会处理宏替换、文件包含(#include
)、条件编译指令(#ifdef
等)等操作,生成扩展了宏和头文件的源代码。
-
命令:
gcc -E source.c -o source.i
说明:
-E
:表示只进行预处理,生成.i
文件。source.c
:输入的 C 源文件。source.i
:预处理后的输出文件。
结果: 你会得到一个包含了所有宏定义、头文件展开的
.i
文件。你可以查看文件中宏是如何展开的,包含文件如何被插入等。
2. 编译阶段 (Compilation)
在编译阶段,GCC 会将源代码转化为汇编代码。这个过程包括语法分析、代码生成等。
-
命令:
gcc -S source.c -