GCC 13.2 编译 C/C++ 项目:4 步拆解与 3 个关键参数实战
在 Linux 和类 Unix 系统中,GCC(GNU Compiler Collection)是最常用的编译器套件之一。对于 C/C++ 开发者来说,理解 GCC 的编译过程以及关键参数的使用,能够帮助我们更高效地构建项目,定位问题,以及优化性能。本文将深入解析 GCC 13.2 版本的编译流程,并通过具体示例展示如何利用关键参数控制编译过程。
1. GCC 编译流程概述
GCC 编译 C/C++ 代码的过程可以分为四个主要阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。每个阶段都有对应的 GCC 参数来控制,让我们能够单独查看每个阶段的输出。
1.1 预处理阶段
预处理是编译的第一步,主要处理源代码中的预处理指令,例如 #include 、 #define 等。在这个阶段:
- 展开所有的宏定义
- 处理条件编译指令(如
#ifdef) - 包含头文件内容
- 删除注释
使用 -E 参数可以让 GCC 在预处理后停止:
gcc -E hello.c -o hello.i
生成的 .i 文件包含了所有预处理后的代码,通常比原始代码大很多,因为所有包含的头文件都被展开。
1.2 编译阶段
编译阶段将预处理后的代码转换为汇编代码。这个阶段会进行语法检查、类型检查等,并生成平台相关的汇编代码。
使用 -S 参数可以生成汇编代码:
gcc -S he




359

被折叠的 条评论
为什么被折叠?



