推荐新手用 rustup 一键安装 Rust:执行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh,安装后需 source $HOME/.cargo/env;国内用户可设 RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup 加速;还需安装系统 C 工具链(如 build-essential)以解决 linker 错误。

怎么用官方脚本一键装 Rust(推荐新手)
绝大多数人不需要手动编译或改 PATH,rustup 就是专为这个场景设计的安装器。它不只装 rustc 和 cargo,还管工具链切换、文档本地化、组件增删——手动配反而容易漏。
直接跑这行命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
执行完会提示你重启 shell 或运行 source $HOME/.cargo/env。别跳过这步,否则终端不认识 cargo。
- 如果提示
command not found: rustc,大概率是没重载环境变量,不是没装成功 - 国内网络偶尔卡在下载阶段,可以加
-y参数跳过交互,或换源(见下一条) - 脚本默认装 stable 工具链;想同时用 nightly,装完再跑
rustup toolchain install nightly
国内用户装 Rust 卡在 downloading component 'rustc' 怎么办
这是 rustup 从官方 CDN 拉二进制包时超时或被限速,不是网络完全断了。官方镜像源没提供完整替代,但可以用环境变量临时切到清华源:
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
然后再跑安装脚本。注意:这个变量只对当前 shell 有效,所以最好在运行脚本前 export,而不是装一半再设。
- 别改
RUSTUP_UPDATE_ROOT,它控制的是 rustup 自身更新地址,和组件下载无关 - 如果已失败退出,先删掉半截安装:
rm -rf $HOME/.rustup $HOME/.cargo,再重来 - 某些企业网络会拦截 HTTPS 的 SNI 域名,表现为连接超时但无报错,这时只能换网络或走代理
装完 cargo build 报错:error: linker `cc` not found
Rust 编译器本身不带链接器,cargo build 默认调系统 cc(通常是 gcc 或 clang)。Linux 发行版默认不装 C 工具链,尤其是最小化安装的服务器。
根据发行版装对应开发包:
- Ubuntu/Debian:
sudo apt install build-essential - CentOS/RHEL/Fedora:
sudo dnf groupinstall "Development Tools"或sudo yum groupinstall "Development Tools" - Arch Linux:
sudo pacman -S base-devel
验证是否生效:运行 cc --version 能输出版本号,且 cargo build 不再报 linker 错误。
- 仅装
gcc不够,build-essential还含make、libc6-dev等依赖项 - WSL2 用户常漏装
libssl-dev,导致某些 crate(如reqwest)编译失败,按需补上
rustc 版本对项目兼容性影响有多大
Rust 的稳定版每六周发布一次,但语言本身有严格的向后兼容保证:只要用了 stable 工具链,旧代码几乎总能编译通过。真正影响项目的不是 rustc 大版本号,而是 Cargo.lock 里锁死的依赖版本 + 所用的 edition(比如 2018 / 2021)。
- 新项目建议用
cargo init --edition 2021,避免老 edition 的生命周期写法干扰 - 升级 rustc 后遇到编译错误,先查是不是某个 crate 在新版中 deprecated 了某个 API,而不是怀疑 rustc 本身坏了
-
rustup update默认只升 stable,不会自动切到 nightly;想试新特性得显式rustup default nightly
真正容易被忽略的是:有些 crate(比如 tokio)会在 minor 版本里要求更高 edition,而 cargo update 不会自动改 Cargo.toml 里的 edition 字段——这时候编译报错会指向具体行,但根源其实在顶层配置。










