首先通过rustup安装最新稳定版Rust(包含rustc编译器和cargo包管理器),并配置国内镜像源加速下载:
# 设置国内镜像源(可选但推荐)
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
# 安装rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 添加cargo到PATH(首次安装后需执行)
source ~/.cargo/env
安装Ubuntu所需的编译工具链(build-essential包含gcc、make等):
sudo apt update && sudo apt install -y build-essential curl
修改~/.cargo/config.toml(若不存在则新建),将依赖仓库替换为国内镜像(如中科大),加速cargo build时的依赖下载:
[source.crates-io]
replace-with = 'ustc'
[registries.ustc]
index = "https://mirrors.ustc.edu.cn/crates.io-index/"
Rust团队持续优化编译器性能,定期升级至最新稳定版可获得更好的编译速度和代码优化:
rustup update stable
cargo check代替cargo build,仅检查语法和类型错误,不生成可执行文件,速度提升约3-5倍。cargo build --release,启用LLVM优化(opt-level=3)、链接时优化(LTO)等,生成的二进制文件性能更高(但编译时间更长)。Rust默认开启增量编译(仅重新编译修改过的文件),确保Cargo.toml中[profile.dev]的incremental设置为true(默认值):
[profile.dev]
incremental = true # 保持默认即可
安装sccache(分布式编译缓存),缓存编译结果以减少重复编译时间:
# 安装sccache
cargo install sccache
# 设置环境变量,让cargo使用sccache作为编译器包装器
export RUSTC_WRAPPER=$(which sccache)
codegen-units增加并行编译的任务数,提升编译速度(但可能轻微降低运行时性能):[profile.dev]
codegen-units = 16 # 默认是16,可根据CPU核心数调整(如32)
RUSTFLAGS="-Z threads=8" cargo +nightly build # 使用8个线程
使用mold(现代链接器)替代默认的ld,可显著缩短链接时间(尤其对大型项目效果明显):
# 安装mold(Ubuntu 22.04+可通过apt安装)
sudo apt install -y mold
# 设置环境变量,让rustc使用mold作为链接器
export RUSTC_LINKER=mold
使用cargo-udeps工具检测并移除项目中未使用的依赖项,减少编译时间和二进制文件体积:
# 安装cargo-udeps
cargo install cargo-udeps
# 检测未使用依赖
cargo +nightly udeps
# 手动移除检测到的无用依赖(在Cargo.toml中删除对应项)
使用cargo tree工具查看依赖关系,识别并解决重复依赖或嵌套过深的问题:
# 安装cargo-tree
cargo install cargo-tree
# 查看依赖树
cargo tree
# 示例:移除重复的serde依赖(若有)
通过以上步骤,可显著提升Rust项目在Ubuntu上的编译效率,兼顾开发时的快速迭代和生产环境的性能需求。