在 CentOS 上编译 C++ 慢,通常可以从硬件、编译参数、构建系统、工具链、系统环境几个层面来优化。下面按“立竿见影 → 进阶优化 → 根因排查”给你一套实用方案。
make -j$(nproc)
# 或
make -j$(($(nproc)+1))
如果是 CMake:
cmake --build . -j$(nproc)
⚠️
-j太大可能导致内存不足(OOM),视机器内存调整
ccache(强烈推荐)避免重复编译相同代码:
yum install ccache
export CC="ccache gcc"
export CXX="ccache g++"
或 CMake:
cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .
第一次慢,第二次明显快。
ninja 替代 makeCMake + Ninja 编译更快:
yum install ninja-build
cmake -GNinja .
ninja
-O0 -g
而不是:
-O2 / -O3
CMake 示例:
cmake -DCMAKE_BUILD_TYPE=Debug .
-fsanitize=address 很慢)PROFILING / COVERAGEGCC 支持 PCH:
// stdafx.h
#include <vector>
#include <string>
#include <map>
g++ -x c++-header stdafx.h
CMake:
target_precompile_headers(myapp PRIVATE stdafx.h)
#includeinclude what you useCentOS 默认 GCC 很老(如 4.8 / 7):
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
或使用 Clang:
yum install clang
如果是虚拟机或 NAS:
mkdir /dev/shm/build && cd /dev/shm/build
编译慢常因:
make -j 被 OOM kill检查:
free -h
top
distccicecc适合多台机器一起编译。
.cppnproc
free -h
gcc --version
ls /usr/lib/ccache
mount | grep nfs
你可以告诉我:
我可以直接给你针对性配置方案,甚至帮你改 CMake / Makefile。