在 CentOS 上感觉 gcc 编译很慢,通常不是 gcc 本身“故意慢”,而是由系统、配置或使用方式导致的。下面按最常见原因给你一个系统性的解释和优化建议。
CentOS 7 默认:
gcc 4.8.5
CentOS 8:
gcc 8.x
问题:
✅ 解决:
# CentOS 7
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
gcc --version
很多人这样编译:
make
但 gcc 本身是单线程编译每个文件。
✅ 正确做法:
make -j$(nproc)
⚠️ 如果内存小,-j 太多反而会更慢或 OOM
特别是:
-O2 / -O3
在 Debug 阶段完全没必要
✅ 建议:
-O0 -g
-O2
-g + -O2 同时-g -O2
这会:
✅ 建议:
-O0 -g-O2特别是:
一个 .cpp 可能展开成 几万行代码
✅ 缓解:
#includeccache每次改一点都要重新编译?
✅ 安装:
yum install ccache
使用:
export CC="ccache gcc"
export CXX="ccache g++"
效果:
gcc 会产生大量临时文件:
/tmp
✅ 检查:
df -h /tmp
✅ 优化:
export TMPDIR=/dev/shm
free -h
如果看到:
Swap: used 很多
✅ 解决:
-jCentOS 默认:
会拖慢文件访问
✅ 临时测试:
setenforce 0
gcc --version
nproc
free -h
make -j$(nproc)
ccache -s
CentOS 上 gcc 慢,90% 是因为:老 gcc + 没并行 + 没 ccache + 开了重优化
如果你愿意,可以告诉我:
我可以直接给你最优编译参数。