在 Ubuntu 上优化 GCC 编译性能(以及生成代码的运行性能),可以从编译选项、系统环境、GCC 版本、并行与链接几个方面入手。下面按“实用优先级”给你一个较完整的清单。
-O2
绝大多数场景推荐。
-O3
适合:
⚠️ 注意:
-O3 下行为异常(少见)-march=native
-mtune=native
只在本机运行程序时强烈推荐。
示例:
gcc -O3 -march=native -mtune=native main.c
-flto
编译 + 链接都要加:
gcc -O3 -flto -c a.c
gcc -O3 -flto -c b.c
gcc -O3 -flto a.o b.o -o app
✅ 优点:
❌ 缺点:
gcc --version
sudo apt update
sudo apt install gcc-12 g++-12
切换默认:
sudo update-alternatives --config gcc
新版 GCC 通常:
make -j$(nproc)
cmake --build build -j$(nproc)
-Wl,-fuse-ld=gold
-Wl,-fuse-ld=lld
示例:
gcc -O3 -flto -Wl,-fuse-ld=gold main.c
-DNDEBUG
-ffast-math # 谨慎使用
gcc -O3 -DNDEBUG -ffast-math main.c
⚠️ -ffast-math 不适合:
gcc -O3 -fprofile-generate main.c
./a.out # 运行典型负载
gcc -O3 -fprofile-use main.c
✅ 可带来 5%~20% 性能提升
❌ 编译流程复杂
sudo cpufreq-set -g performance
sudo powertop --auto-tune
mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build
gcc -O3 -march=native -mtune=native -flto \
-DNDEBUG -Wl,-fuse-ld=gold \
main.c -o app
你可以告诉我:
lscpu)我可以直接给你最优编译参数组合。