温馨提示×

centos编译c++慢怎么解决

小樊
40
2026-10-11 21:13:14
栏目: 编程语言

在 CentOS 上编译 C++ 慢,通常可以从硬件资源、编译参数、构建系统、环境配置几个层面来优化。下面按“见效快慢 + 实用性”给你一套方案。


一、最直接有效的办法(立竿见影)

1. 开启多核并行编译

这是最常用、效果最明显的手段。

make -j$(nproc)

或 CMake:

cmake --build . -j$(nproc)

查看 CPU 核数:

nproc

一般 -j 核数 或 核数 + 1 最快


2. 使用 ccache(强烈推荐)

避免重复编译,第二次编译非常快。

yum install -y ccache

使用方式(CMake 示例):

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

或 CMake:

cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .

查看命中率:

ccache -s

二、编译参数优化(编译更快)

3. 关闭不必要的优化(开发阶段)

仅开发/调试阶段使用

-O0 -g

发布时再:

-O2 或 -O3

CMake 示例:

cmake -DCMAKE_BUILD_TYPE=Debug .

4. 减少头文件依赖(重点)

C++ 编译慢,90% 是头文件引起的。

✅ 做法:

  • 使用 前向声明
  • 减少 #include
  • 使用 PIMPL 模式
  • 用 <iostream> 代替 <bits/stdc++.h>(CentOS 上尤其慢)

5. 使用预编译头(PCH)

大型项目非常有效。

CMake 示例:

target_precompile_headers(myapp PRIVATE stdafx.h)

三、构建系统层面优化

6. 使用 Ninja(比 Make 快很多)

yum install -y ninja-build
cmake -G Ninja .
ninja

通常比 make 快 20%~50%


7. 拆分编译单元(减少单文件体积)

  • 避免“巨无霸 .cpp”
  • 避免一个 cpp include 整个工程

四、CentOS 系统层面优化

8. 升级编译器(重要)

CentOS 自带 gcc 很老(4.8 / 7),非常慢。

使用 devtoolset(推荐)

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

支持:

  • 更快的编译
  • 更好的 C++17/20 支持

9. 使用 tmpfs(内存编译)

适合小项目:

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

把 build 目录放进去。


10. 磁盘 IO 优化

  • 避免使用 NFS / 网络盘
  • 使用 SSD
  • 关闭 SELinux(测试环境)
setenforce 0

五、如果是“特别慢”的情况

11. 检查是否有这些问题

top
  • CPU 没跑满 → IO 问题
  • 内存 swap → 加内存
  • 单线程编译 → 没开 -j

六、推荐组合(最佳实践)

✅ CentOS 编译 C++ 最快组合:

  • devtoolset-11
  • ccache
  • Ninja
  • -j$(nproc)
  • Debug 模式开发

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

  • CentOS 版本
  • gcc 版本
  • 项目规模(文件数 / 是否模板多)
  • 是否在 Docker / 虚拟机

我可以给你针对性的优化方案。

0 踩