在 Debian 下用 gcc 编译慢,可以从编译器选项、系统环境、硬件、构建方式几个方面来优化。下面按「立竿见影 → 进阶优化 → 长期方案」给你一套实用建议。
-j)这是最明显的加速手段。
make -j$(nproc)
或 CMake:
cmake --build build -j$(nproc)
查看 CPU 核心数:
nproc
如果是 Release 构建:
-O2 -DNDEBUG
避免:
-g3 -O0 # 非常慢
ccache(强烈推荐)重复编译、增量编译提速神器
sudo apt install ccache
使用方式(任选其一):
export CC="ccache gcc"
export CXX="ccache g++"
或 CMake:
-DCMAKE_C_COMPILER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
效果:
✅ 第二次编译通常 快几倍甚至十倍
-O0:最慢(调试用)-O1:快一点-O2:推荐-Os:体积优先-O3:可能更慢(尤其模板多)✅ 一般项目用:
-O2
头文件爆炸是 C++ 编译慢的头号原因
优化方式:
include 整个大头文件#pragma once适合大项目(Qt、LLVM 等)
GCC 示例:
g++ -x c++-header stdafx.h -o stdafx.h.gch
CMake:
target_precompile_headers(myapp PRIVATE stdafx.h)
ninja 替代 makeNinja 比 Make 快很多
sudo apt install ninja-build
CMake:
cmake -GNinja build
ninja -C build
lld 或 gold 链接器链接慢也很常见
lld(推荐)
sudo apt install lld
CMake:
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld"
或 gcc:
gcc -fuse-ld=lld
适合小到中型项目
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
把 build 目录放进去:
cmake -S . -B /tmp/build
iostat -x 1
或:
htop
如果是 磁盘 100%,考虑:
查看版本:
gcc --version
Debian 升级示例(bookworm → gcc-12/13):
sudo apt install gcc-12 g++-12
| 方案 | 说明 |
|---|---|
分布式编译 distcc |
多台机器一起编 |
| 模块(C++20 Modules) | 彻底解决头文件问题 |
| 拆库 / 接口隔离 | 减少重编范围 |
| 只编改动模块 | 不要全量编 |
你可以对照:
make -j$(nproc)ccacheninja-O0 -g3lld如果你愿意,可以告诉我:
cat /etc/os-release)我可以直接给你一套针对你项目的优化方案。