Rust Learning - Rustup

RUSTUP

https://rust-lang.github.io/rustup/index.html

rustup 是一个管理 Rust 版本和相关工具的命令行工具,官方推荐使用rustup来安装和管理rust的版本和工具链。

对于rust开发,rustup不是必须安装的,对于离线安装或使用系统自带的包管理器情况,可以直接安装自己需要的版本。https://forge.rust-lang.org/infra/other-installation-methods.html提供了离线安装包。离线安装包中不包含rustup,所以对于交叉编译的场景不是很方便。

对于一般Windows平台开发下载x86_64-pc-windows-msvc的64位版本,rust会使用msvc的库,而x86_64-pc-windows-gnu的版本则会使用gnu提供的c/c++库。需要根据自己的应用程序环境决定使用哪个版本的安装包。

如果选择了MSVC版本,由于rust需要使用VC的链接器和库,因此还需要安装Visual Studio,至少是2013版本之后。详情

rustup安装rust

Windows上运行rustup-init.exe后,会议命令行交互提示的方式提示当前的安装选项

rustup_1
rustup_1

通过选择2后,可以配置自己修改安装的设置

rustup_2
rustup_2

继续回车后,rustup会逐个下载组件进行安装

rust_install
rust_install

rustup会把rustc,cargo, rustup等工具程序安装在.cargo\bin\目录中。

cargo_bin
cargo_bin

更新 $rustup update

安装状态 $rustc --version 输出 rustc 1.67.1 (d5a82bbd2 2023-02-07)

查看文档 rustup doc会自动使用默认浏览器打开安装的离线文档页面

自定义安装目录

rustup的默认安装目录是用户目录下的.cargo\.rustup\,这两个目录在首次安装完差不多要用1G多空间,可以把这两个目录调整到其他磁盘节省C盘占用。

先配置好CARGO_HOMERUSTUP_HOME两个环境变量,再执行rustup-init.exe,此时交互提示中的目录会变化环境变量指定的目录。

change_rustup_path
change_rustup_path

RUSTUP_HOME目录中会自动创建downloads和tmp目录,以及settings.toml文件。

rustup的安装程序会自动下载每一个组件,并在最后把cargo的bin目录加入系统path中

rust_download
rust_download

现在所有的程序都安装到了新目录下,不用担心C盘空间。

D:\rust\cargo\registry目录中是当前系统中已经安装过的包。

配置rust库的安装源

windows系统添加以下两个环境变量可以使用国内的镜像站更新rustup

1
2
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

Cargo下载依赖库的镜像配置,在$CARGO_HOME 目录下新建一个config文件,内容如下

1
2
3
4
5
[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

就可以使用中科大镜像源了,速度快很多。

Rust Crates 源使用帮助 — USTC Mirror Help 文档

交叉编译

rust种使用的编译平台的命名规则<arch><sub>-<vendor>-<sys>-<env>,例如x86_64-unknown-linux-gnu x86_64-pc-windows-msvc armv7-linux-androideabi

  1. 安装目标库

    rustup target add armv7-unknown-linux-gnueabi

    rustup target add aarch64-unknown-linux-gnu

    安装后的库目录为

    .\rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\armv7-unknown-linux-gnueabi

    使用rustup show可以看到当前安装过的环境

  2. 配置目标的链接器

    因为rust要使用目标的链接器生成二进制文件,所以如果没有配置目标链接器,会提示error: linkerccnot found错误

  3. 交叉编译

    cargo build --target=armv7-unknown-linux-gnueabi

0%