温馨提示×

centos gcc编译慢怎么破

小樊
42
2026-09-17 21:38:14
栏目: 智能运维

在 CentOS 上编译(尤其是用 gcc 编译大项目)很慢,通常可以从硬件、系统配置、gcc 参数、并行、缓存、工具链几个层面来优化。下面按“见效快慢”给你一套实用方案。


一、最快见效:开启并行编译(必做)

绝大多数“编译慢”是因为没用多核。

make -j$(nproc)

或 CMake:

cmake --build . -j$(nproc)

⚠️ 如果内存小,-j 太大反而更慢甚至 OOM,可限制:

make -j4

二、使用 ccache(强烈推荐)

避免“改一行,全量重编”。

yum install -y ccache

使用方式(二选一):

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

或 CMake:

cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache \
      -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .

查看命中率:

ccache -s

三、升级 gcc(老 gcc 很慢)

CentOS 7 自带 gcc 4.8 非常慢。

CentOS 7

yum install -y centos-release-scl
yum install -y devtoolset-11
scl enable devtoolset-11 bash

CentOS 8 / Stream

dnf install -y gcc-toolset-11

新 gcc 在优化、编译速度上都明显更好。


四、调整 gcc 编译参数

1️⃣ Debug 模式别开 -O2/-O3

-O0 -g

2️⃣ Release 模式合理使用优化

-O2 -DNDEBUG

❌ 不要无脑 -O3(更慢且不一定快)

3️⃣ 减少头文件爆炸(很重要)

  • 前向声明
  • PIMPL
  • 减少 #include

五、使用预编译头(PCH)

适合 C++ 大项目(如 Qt、LLVM)。

CMake 示例:

target_precompile_headers(myapp PRIVATE stdafx.h)

六、使用 Ninja(比 Make 快)

yum install -y ninja-build
cmake -GNinja .
ninja

通常比 make 快 20%~50%


七、磁盘 & 内存优化

1️⃣ 用 tmpfs(内存编译)

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

把 build 目录放进去,IO 飞起。

2️⃣ 内存建议

  • 小项目:≥ 4G
  • 大项目(LLVM / Chrome):≥ 16G

八、分布式编译(团队/服务器多)

distcc

yum install -y distcc

适合多台机器一起编。


九、终极方案(大项目)

  • 模块(C++20 Modules)(gcc 11+ 支持)
  • bazel / buck 构建系统
  • 分离编译单元

十、快速自检清单 ✅

  • [ ] make -j$(nproc)
  • [ ] 使用 ccache
  • [ ] gcc ≥ 9
  • [ ] 用 Ninja
  • [ ] build 目录在 tmpfs
  • [ ] Debug 不开优化

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

  • CentOS 版本(7 / 8 / Stream)
  • gcc 版本
  • 项目规模(C / C++ / CMake / Make)
  • 是否服务器 / 虚拟机

我可以直接给你一套最优配置命令

0