温馨提示×

ubuntu gcc怎样提速编译

小樊
45
2026-09-28 06:14:45
栏目: 智能运维

在 Ubuntu 下使用 GCC 编译时,可以从编译器选项、系统资源、构建工具、代码层面几个方向来提速。下面按“实用程度”给你总结一套方案。


一、编译器层面的提速(最直接)

1. 开启优化(注意适用场景)

-O2

或

-O3   # 编译慢,运行快,适合最终发布

⚠️ 调试阶段建议用 -O0,否则编译慢且难调试。


2. 使用更快的预处理/编译选项

-fno-exceptions      # C++ 项目中如不需要异常
-fno-rtti            # 不需要 RTTI
-fomit-frame-pointer # 少量性能提升

⚠️ 会影响功能,需确认项目允许。


3. 使用 ccache(强烈推荐)

重复编译提速神器

sudo apt install ccache

使用方式:

export CC="ccache gcc"
export CXX="ccache g++"

或在 CMake 中:

-DCMAKE_C_COMPILER_LAUNCHER=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache

✅ 第二次编译通常快数倍


4. 使用 gold 或 lld 链接器

sudo apt install binutils-gold

CMake 示例:

-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=gold"

或(LLVM):

-fuse-ld=lld

✅ 大项目链接阶段提升明显


二、并行编译(立竿见影)

1. make 并行

make -j$(nproc)

2. CMake + Ninja(比 Make 快很多)

sudo apt install ninja-build
cmake -GNinja ..
ninja

✅ Ninja 在增量编译上优势很大


三、头文件与依赖优化

1. 减少头文件依赖

  • 使用 前向声明
  • 避免在头文件中 include 大库

2. 使用预编译头(PCH)

GCC 示例:

g++ -x c++-header stdafx.h -o stdafx.h.gch

适合大型 C++ 项目

3. 使用 modules(C++20,长期方案)

-std=c++20

⚠️ 工具链支持还在完善


四、系统层面的提速

1. 使用 SSD

编译是 IO 密集型,SSD 提升巨大

2. 增加内存

避免 swap,编译时内存不足会极慢

3. 使用 tmpfs(进阶)

mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build

把构建目录放内存中


五、常见组合推荐(实战配置)

小型项目

make -j$(nproc)

中大型 C/C++ 项目

ccache + CMake + Ninja + gold

极限提速

ccache + Ninja + lld + tmpfs

如果你愿意,可以告诉我:

  • 项目规模(文件数 / 代码量)
  • 是否 CMake / Makefile
  • C 还是 C++

我可以给你一套针对你项目的编译提速方案。

0 踩