GCC 完全指南
GCC 完全指南
从编译原理到生产实践,系统掌握 GNU Compiler Collection 的方方面面。
适用读者
| 读者类型 | 说明 |
|---|---|
| C/C++ 初学者 | 希望理解编译流程与 GCC 基本用法 |
| 系统开发者 | 需要深入优化、调试与交叉编译 |
| 嵌入式工程师 | 需要交叉编译工具链与裸机编译 |
| DevOps 工程师 | 需要在 CI/CD 中集成 GCC 构建流水线 |
| 架构师 | 评估编译器特性、安全加固与性能调优 |
章节导航
| 章节 | 标题 | 关键词 |
|---|---|---|
| 01 | GCC 简介与历史 | GCC 历史 · 支持语言 · 编译器架构 · FSF |
| 02 | 安装与环境配置 | 各平台安装 · 交叉编译工具链 · 多版本共存 |
| 03 | 编译基础流程 | 预处理 · 编译 · 汇编 · 链接 · 四阶段模型 |
| 04 | 常用编译选项 | -O · -W · -std · -I · -L · -l · -D · -f |
| 05 | 预处理器详解 | 宏 · 条件编译 · #include · 预定义宏 |
| 06 | 优化技术 | -O0 到 -O3 · -Ofast · -Os · LTO · PGO |
| 07 | 调试支持 | -g · GDB 集成 · DWARF · 调试信息级别 |
| 08 | 警告与静态分析 | -Wall · -Wextra · -Werror · -fanalyzer |
| 09 | 链接器详解 | 静态库 · 动态库 · 符号解析 · ld · gold · lld |
| 10 | 库的创建与使用 | 创建库 · 安装库 · pkg-config · RPATH |
| 11 | 交叉编译 | target · host · build · sysroot · 工具链 |
| 12 | 汇编输出与内联汇编 | -S · AT&T · Intel · 内联汇编 · 约束 |
| 13 | GCC 扩展特性 | attribute · Built-ins · 向量化 · Statement Exprs |
| 14 | Sanitizers | ASan · TSan · UBSan · 内存错误检测 |
| 15 | 性能分析 | gprof · perf · 火焰图 · Cache 性能 |
| 16 | GCC 插件开发 | 插件 · 自定义 Pass · Tree · RTL · GIMPLE |
| 17 | CMake 集成 | FindX · 编译器标志 · 工具链文件 · 生成器表达式 |
| 18 | Docker 中的 GCC | 交叉编译容器 · 多架构构建 · CI 镜像 |
| 19 | 故障排查 | 常见错误 · 链接错误 · ABI 兼容 · 版本问题 |
| 20 | 最佳实践 | 编译规范 · CI 集成 · 安全编译 · 生产构建 |
环境要求
操作系统: Linux (推荐 Ubuntu 22.04+) / macOS (Xcode CLT) / Windows (MSYS2/WSL)
GCC 版本: 本教程基于 GCC 12.x / 13.x 编写,大部分内容适用于 GCC 8+
磁盘空间: 完整工具链 + 交叉编译约需 5GB+
推荐工具: GDB 12+、CMake 3.20+、make 4.x
如何使用本教程
- 顺序学习: 按章节顺序,从 01 到 20 逐步推进
- 按需查阅: 根据上表跳转到具体章节解决实际问题
- 动手实践: 每个代码示例均可直接运行,建议边学边练
- 笔记标注: 每章末尾设有「要点回顾」与「注意事项」
本教程基于 GCC 12.x / 13.x 编写,部分选项和特性在旧版本中可能不可用。