在 Ubuntu 上优化 GCC 通常可以从编译选项、系统环境、代码层面、链接方式几个方向入手。下面按实用程度给你一个系统总结。
-O2
✅ 推荐默认使用,兼顾性能与稳定性
更高等级:
-O3
⚠️ 可能提升性能,但:
调试阶段:
-O0 -g
Ubuntu 默认是“通用兼容”,可手动指定:
-march=native
-mtune=native
示例:
gcc -O2 -march=native -mtune=native main.c
查看本机 CPU:
gcc -march=native -E -v - </dev/null 2>&1 | grep march
适用于:
-ffast-math
⚠️ 忽略 IEEE 浮点规则,科学计算慎用
-funsafe-math-optimizations
编译 + 链接都加:
gcc -O2 -flto -c a.c
gcc -O2 -flto a.o -o app
或一步:
gcc -O2 -flto main.c -o app
✅ 可显著提升性能(尤其 C++)
Ubuntu 自带 GCC 通常偏旧:
查看版本:
gcc --version
安装新版(示例 GCC 12):
sudo apt install gcc-12 g++-12
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 60
sudo apt install linux-tools-common
sudo cpupower frequency-set -g performance
-Wall -Wextra
mallocstd::vector / 栈数组gcc -O2 -fprofile-generate main.c
./a.out # 运行真实负载
gcc -O2 -fprofile-use main.c
✅ 对大型程序效果明显(如数据库、编译器)
-static
-s
gcc -O2 -march=native -mtune=native -flto \
-Wall -Wextra main.c -o app
perf stat ./app
perf record ./app
perf report
如果你能告诉我:
我可以给你一套更精确的 GCC 优化方案。