温馨提示×

ubuntu gcc为什么很慢

小樊
52
2026-10-21 13:49:14
栏目: 智能运维

在 Ubuntu 上感觉 gcc 编译很慢,通常不是 gcc 本身“故意慢”,而是由环境、配置或用法导致的。下面按常见原因 → 解释 → 解决建议来说明。


一、最常见原因

1️⃣ 开了 -O2 / -O3 优化

gcc -O2 main.c
  • 优化级别越高,编译时间越长
  • -O3 比 -O0 慢很多倍

✅ 建议:

  • 开发阶段用:
gcc -O0 -g
  • 只在上线/发布时才用 -O2

2️⃣ 开了 -Wall -Wextra + 模板/宏很多

  • 警告检查本身有成本
  • C++ 模板、宏展开会指数级增加编译时间

✅ 建议:

  • 开发时用最少警告
  • CI / 发布时再开严格检查

3️⃣ 没使用编译缓存(ccache)

每次都重新编译相同代码 → 很慢

✅ 解决(强烈推荐):

sudo apt install ccache
export CC="ccache gcc"

第二次编译速度可提升 5–10 倍


4️⃣ 单线程编译(没并行)

默认 gcc 一次只编译一个文件

✅ 解决:

make -j$(nproc)

或 CMake:

cmake --build . -j$(nproc)

二、系统层面原因

5️⃣ 磁盘慢(HDD / 云盘 IO 差)

  • 编译产生大量临时文件
  • 机械硬盘 / 低性能云盘非常慢

✅ 建议:

  • 使用 SSD
  • 或把临时目录放内存:
export TMPDIR=/dev/shm

6️⃣ 内存不足 → 大量 swap

  • 编译时内存不够
  • 系统开始用 swap → 极慢

✅ 检查:

free -h

如果 swap 使用很多,说明内存不够


7️⃣ Ubuntu 默认 gcc 是“发行版构建”

Ubuntu 的 gcc:

  • 偏向稳定性
  • 不一定开启最快编译优化

✅ 可选方案:

  • 使用 gcc-12 / gcc-13
sudo apt install gcc-13

三、C++ 特有原因(如果你用 C++)

8️⃣ 头文件爆炸(include 整个世界)

#include <bits/stdc++.h>

✅ 建议:

  • 只 include 需要的头文件
  • 使用前置声明

9️⃣ 模板 / constexpr 过多

  • 模板实例化非常耗时
  • constexpr 大量计算会拖慢编译

四、快速自查清单 ✅

你可以先试试:

time gcc -O0 main.c

如果:

  • -O0 很快 → 是优化问题
  • 依然慢 → 系统/IO/内存问题

五、一句话总结

Ubuntu 上 gcc 慢,90% 是因为:优化级别高 + 没并行 + 没 ccache + 磁盘/内存差

如果你愿意,可以告诉我:

  • 用的是 C 还是 C++
  • 编译命令
  • gcc --version
  • 是否在 WSL / 虚拟机 / 云服务器

我可以帮你精确分析是哪一类慢。

0 踩