在 Ubuntu 下使用 GCC 编译时,可以从编译器选项、系统资源、构建工具、代码层面几个方向来提速。下面按“实用程度”给你总结一套方案。
-O2
或
-O3 # 编译慢,运行快,适合最终发布
⚠️ 调试阶段建议用 -O0,否则编译慢且难调试。
-fno-exceptions # C++ 项目中如不需要异常
-fno-rtti # 不需要 RTTI
-fomit-frame-pointer # 少量性能提升
⚠️ 会影响功能,需确认项目允许。
ccache(强烈推荐)重复编译提速神器
sudo apt install ccache
使用方式:
export CC="ccache gcc"
export CXX="ccache g++"
或在 CMake 中:
-DCMAKE_C_COMPILER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
✅ 第二次编译通常快数倍
gold 或 lld 链接器sudo apt install binutils-gold
CMake 示例:
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=gold"
或(LLVM):
-fuse-ld=lld
✅ 大项目链接阶段提升明显
make -j$(nproc)
sudo apt install ninja-build
cmake -GNinja ..
ninja
✅ Ninja 在增量编译上优势很大
include 大库GCC 示例:
g++ -x c++-header stdafx.h -o stdafx.h.gch
适合大型 C++ 项目
modules(C++20,长期方案)-std=c++20
⚠️ 工具链支持还在完善
编译是 IO 密集型,SSD 提升巨大
避免 swap,编译时内存不足会极慢
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
把构建目录放内存中
make -j$(nproc)
ccache + CMake + Ninja + gold
ccache + Ninja + lld + tmpfs
如果你愿意,可以告诉我:
我可以给你一套针对你项目的编译提速方案。