在 CentOS 上优化 GCC 编译性能(包括“用 GCC 编译更快”和“生成的程序运行更快”两方面),可以从系统、编译器选项、构建系统、代码层面入手。下面按实用优先级给你一套方案。
CentOS 自带 GCC 通常较旧(如 CentOS 7 是 GCC 4.8),性能和优化能力弱。
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
dnf install gcc-toolset-11
建议至少 GCC 9+,最好 GCC 11/12。
make -j$(nproc)
CMake:
cmake --build . -j$(nproc)
避免重复编译:
yum install ccache
export CC="ccache gcc"
export CXX="ccache g++"
对大型 C++ 项目有效(如 STL、公共头文件)。
#include 整个大库yum install binutils binutils-gold
GCC 使用:
-Wl,-fuse-ld=gold
或
-Wl,-fuse-ld=lld
-O2
或追求极致:
-O3
查看 CPU:
gcc -march=native -Q --help=target
使用:
-march=native -mtune=native
⚠️ 生成的程序只能在同架构 CPU 运行
-flto # 链接时优化
-fno-math-errno
-ffast-math # 数值计算慎用
-funroll-loops
示例:
g++ -O3 -march=native -flto main.cpp
g++ -O2 -fprofile-generate -o app
./app # 运行典型负载
g++ -O2 -fprofile-use -o app
glibc 升级jemalloc / tcmallocmkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
setenforce 0
ccache g++ -O2 -march=native -flto
g++ -O3 -march=native -flto -fprofile-use
如果你愿意,可以告诉我:
我可以给你精确到命令级别的优化方案。