在 CentOS 上编译(尤其是用 gcc 编译大项目)很慢,通常可以从硬件、系统配置、gcc 参数、并行、缓存、工具链几个层面来优化。下面按“见效快慢”给你一套实用方案。
绝大多数“编译慢”是因为没用多核。
make -j$(nproc)
或 CMake:
cmake --build . -j$(nproc)
⚠️ 如果内存小,-j 太大反而更慢甚至 OOM,可限制:
make -j4
避免“改一行,全量重编”。
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
CentOS 7 自带 gcc 4.8 非常慢。
yum install -y centos-release-scl
yum install -y devtoolset-11
scl enable devtoolset-11 bash
dnf install -y gcc-toolset-11
新 gcc 在优化、编译速度上都明显更好。
-O2/-O3-O0 -g
-O2 -DNDEBUG
❌ 不要无脑 -O3(更慢且不一定快)
#include适合 C++ 大项目(如 Qt、LLVM)。
CMake 示例:
target_precompile_headers(myapp PRIVATE stdafx.h)
yum install -y ninja-build
cmake -GNinja .
ninja
通常比 make 快 20%~50%
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
把 build 目录放进去,IO 飞起。
yum install -y distcc
适合多台机器一起编。
make -j$(nproc)如果你愿意,可以告诉我:
我可以直接给你一套最优配置命令。