在 CentOS 上 C++ 编译速度慢,通常不是“CentOS 本身慢”,而是由编译器版本、系统配置、项目结构、硬件和使用方式共同决定的。下面按常见原因逐一说明,并给出对应优化建议。
g++ 是 4.8.5g++ 是 8.x-O2/-O3 效率差)ccache、模块化支持差✅ 解决方案
# CentOS 7
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
# CentOS 8 / Stream
dnf install gcc-toolset-11
ccache(极其重要)每次编译都从零开始,哪怕是没改的文件。
yum install ccache
export CC="ccache gcc"
export CXX="ccache g++"
或 CMake:
cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .
✅ 效果:二次编译可快 5–10 倍
#include <iostream> 展开几千行.cpp 都重新解析头文件#includeCMake 示例:
target_precompile_headers(myapp PRIVATE stdafx.h)
make
make -j$(nproc)
或 CMake + Ninja:
cmake -GNinja .
ninja
✅ Ninja 比 Make 快很多
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
-O0 -g
会非常慢,尤其模板多的项目。
✅ 发布/测试用:
-O2
template✅ 建议:
getenforce
setenforce 0
free -h
如果编译时开始用 swap:
-j 数量| 误解 | 实际情况 |
|---|---|
| CentOS 比 Ubuntu 慢 | 否 |
| 服务器系统不适合编译 | 否 |
| 内核老就慢 | 编译主要看 compiler + IO |
CentOS 8 Stream
+ gcc-toolset-12
+ ccache
+ ninja
+ make -j$(nproc)
+ SSD
如果你愿意,可以告诉我:
我可以给你针对性的优化方案。