温馨提示×

centos编译rust卡怎么办

小樊
34
2026-10-26 08:24:56
栏目: 编程语言

在 CentOS 上编译 Rust(无论是编译 Rust 编译器本身,还是用 Rust 编译项目)经常会遇到卡住、极慢、OOM等问题。下面按常见原因给你一套排查与解决办法。


一、最常见原因:内存不足(OOM / 假死)

Rust 编译非常吃内存,尤其是:

  • 编译 rustc / cargo 源码
  • 启用 debug 模式
  • 并行编译多个 crate

表现

  • make 或 cargo build 卡在某一步
  • 机器负载高,但几乎不前进
  • dmesg 里有 Out of memory

解决办法

1️⃣ 限制并行编译数

export CARGO_BUILD_JOBS=1
# 或
cargo build -j 1

如果是编译 rust 源码:

./x.py build -j 1

2️⃣ 加 swap(强烈建议)

dd if=/dev/zero of=/swapfile bs=1M count=4096
mkswap /swapfile
swapon /swapfile

二、CentOS 系统太老(glibc / gcc 低)

问题

  • CentOS 7 默认:
    • glibc 2.17
    • gcc 4.8
  • 新版 Rust 需要:
    • gcc ≥ 7
    • 新 binutils

解决办法

方案 A:用官方预编译 Rust(最快)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

✅ 不需要本地编译 rustc

方案 B:升级工具链(CentOS 7)

yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash

三、编译 Rust 源码本身(不推荐在 CentOS 直接干)

如果你是在编译 rust-lang/rust,注意:

  • 至少 8G 内存 + 8G swap
  • 编译时间常达 1~3 小时
  • 很容易“看起来卡了”

推荐做法

./x.py build library --stage 1

而不是全量 build


四、debug 模式太慢(release 反而更稳)

有时候 debug 编译反而更卡(LLVM 优化耗资源)

试试 release

cargo build --release

五、磁盘 IO 瓶颈(特别是云服务器)

  • 低配云盘 IOPS 极低
  • Rust 编译产生海量临时文件

建议

  • 放到本地 SSD
  • 或 tmpfs(内存盘,小项目)
mkdir /dev/shm/rustbuild
export CARGO_TARGET_DIR=/dev/shm/rustbuild

六、确定是不是“真卡”还是“慢”

看是否在动:

top
htop
iostat -x 1

如果 cargo / rustc CPU 占用 > 90%,只是慢,不是卡。


七、最推荐方案(总结)

✅ 不要自己编译 Rust 编译器 ✅ 用 rustup 装官方二进制 ✅ 小内存机器:

export CARGO_BUILD_JOBS=1

✅ 加 swap ✅ 用 release 模式


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

  • CentOS 版本(7 / 8 / Stream)
  • 是在 编译 rust 源码 还是 编译自己的 Rust 项目
  • 内存多大

我可以直接给你一套“能跑起来”的具体命令。

0 踩