在 CentOS 上设置 GCC 优化参数,通常分为编译时参数和系统/环境层面配置两部分。下面按常见场景说明。
gcc -O2 -o app app.c
常用级别:
-O0:不优化(调试用)-O1:基本优化-O2:推荐,平衡性能与体积-O3:更激进(可能增大体积、不稳定)-Os:优化体积gcc -O2 -march=native -mtune=native -o app app.c
-march=native:使用本机 CPU 指令集-mtune=native:针对本机 CPU 调度优化若程序要在其他机器运行,不要用
native,而指定具体架构,如:
-march=x86-64 -mtune=generic
gcc -O2 -flto -fomit-frame-pointer -o app app.c
-flto:链接时优化(需编译和链接都加)-fomit-frame-pointer:减少栈帧开销(调试不便)gcc -O2 -ffast-math -ftree-vectorize -o app app.c
-ffast-math:牺牲精度换速度(不适合金融/科学计算)-ftree-vectorize:自动向量化(常随 -O3 自动开启)gcc -O2 -pthread -o app app.c
CFLAGS = -O2 -march=native -mtune=native -Wall
LDFLAGS = -flto
app: app.c
gcc $(CFLAGS) $(LDFLAGS) -o app app.c
CentOS 7 默认 GCC 较老(4.8.5):
gcc --version
如需新版本:
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
rpm / mock 编译包时不要在 RPM 中用 -march=native,应使用:
%optflags
通常包含:
-O2 -g -pipe -Wall -Werror=format-security
gcc -O2 -g app.c -o app
perf stat ./app
-O2 -march=x86-64 -mtune=generic -pipe -fstack-protector-strong
如果你有具体场景(如数据库、Web 服务、科学计算、嵌入式),我可以给更精确的参数。