linux装rust必须用rustup,因它自动配置工具链并管理多版本;安装后需执行source "$home/.cargo/env"使cargo生效,且须先装build-essential等c工具链解决linker错误,国内用户还需配置清华镜像源加速下载。

Linux 上装 Rust,用 rustup 是唯一靠谱方式;手动编译、系统包管理器(如 apt install rustc)或跳过 C 工具链直接跑 cargo build,基本都会卡在 linker 报错或命令找不到。
为什么 cargo 命令根本不存在
安装脚本确实把 cargo 放进了 $HOME/.cargo/bin,但这个路径默认不在 $PATH 里。脚本末尾会提示你执行 source "$HOME/.cargo/env",这步不是可选,是必须。
- 立即生效:运行
source "$HOME/.cargo/env"(注意引号,防路径含空格) - 永久生效:把这行加到
~/.bashrc或~/.zshrc末尾,再执行source ~/.bashrc - 验证是否成功:
which cargo应输出类似/home/xxx/.cargo/bin/cargo,而不是报错或返回/usr/bin/cargo
error: linker `cc` not found 的真实原因
Rust 编译器本身不带链接器,cargo build 默认调用系统 cc(通常是 gcc)。最小化 Linux 发行版(如 Ubuntu Server、Docker 镜像、WSL2 默认安装)压根没装 C 构建工具,和 Rust 安装是否成功完全无关。
- Ubuntu/Debian:运行
sudo apt install build-essential(它包含gcc、make、libc6-dev等,只装gcc不够) - CentOS/RHEL/Fedora:
sudo dnf groupinstall "Development Tools"(旧版yum用sudo yum groupinstall "Development Tools") - WSL2 用户额外建议:
sudo apt install libssl-dev,否则reqwest等 crate 会编译失败 - 验证:
cc --version能输出版本号,且cargo build不再报该错误
国内网络下安装卡在 downloading component 'rustc'
这不是断网,是 static.rust-lang.org 在国内被限速或 DNS 污染。中断后必须清理残留再重试,否则镜像配置无效。
- 先删干净:
rm -rf $HOME/.rustup $HOME/.cargo - 设镜像源(仅当前 shell 有效):
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup - 再执行安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 安装完立刻
source "$HOME/.cargo/env",然后验证:cargo --version和rustc --version都有输出才算真正就位
换源要配两处,只改一半等于没换
cargo 下依赖走 crates.io,rustup 下工具链走 static.rust-lang.org,两者镜像源不同、配置位置也不同,漏掉任何一层都会卡住。
- 工具链下载加速(影响
rustup install、rustup update):
执行rustup set dist-server https://mirrors.tuna.tsinghua.edu.cn/rust-static - crate 依赖下载加速(影响
cargo build、cargo add):
编辑~/.cargo/config.toml,写入:
[source.crates-io] replace-with = "ustc" [source.ustc] registry = "https://mirrors.ustc.edu.cn/crates.io-index"
改完不用重启,直接 cargo search rand 测试——返回快且无超时即生效。
最容易被忽略的是:装完 rustup 后不执行 source "$HOME/.cargo/env",以及以为装了 gcc 就等于装了完整构建链——其实 build-essential 或 "Development Tools" 才是真正兜底的组合包。











