rust安装

提纲
1、rust简介
2、下载rustup-init.exe,但是不要执行
3、设置环境变量:CARGO_HOME、RUSTUP_HOME、RUSTUP_UPDATE_ROOT、RUSTUP_DIST_SERVER
4、建新项目



1、rust简介

rust官网:https://www.rust-lang.org/

特点:高性能、可靠(安全性好)、容易编程。

  • UI层开发:Rust的WASM发展的如火如荼, 隐隐有王者风范,在JS的基础设施领域Rust也是如鱼得水, 例如 swc 、 deno 等,同时 nextjs 也是押宝Rust,可以说Rust在前端的成功完全是无心插柳柳成荫。
  • 基础设施层, 数据库、搜索引擎、网络设施、云原生等都在出现Rust的身影,而且还不少
  • 系统开发,目前linux已经将Rust列为即将支持的内核开发语言,是即C语言后第二门支持内核开发的语言,不过刚开始将主要支持驱动开发
  • 系统工具,现在最流行的就是用Rust重写之前C、C++写的一票系统工具,还都获得了挺高的关注和很好的效果, 例如 sd, exa, ripgrep, fd, bat等
  • 区块链,目前rust和go各领风骚,未来rust会一统江湖


2、下载rustup-init.exe,但是不要执行

https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe



3、设置环境变量

设置CARGO_HOME和RUSTUP_HOME主要是为了使用安装的内容到自己想要的路径下,我这里是安装到E盘中去。

CARGO_HOME=E:\Rust\cargo 这个目录是存放当前选定的那个版本的rust的目录,类似于nvm中的nvmsymlink_home。
RUSTUP_HOME=E:\Rust\rustup 这个环境变量是rustup管理多个rust版本的目录,是存放下载多个版本的rust的目录,类似于nvm中的多个nodejs存放目录

中国科技大学
RUSTUP_DIST_SERVER=http://mirrors.ustc.edu.cn/rust-static 这2个环境变量用来设置下载多个版本rust的网址,是下载rust的网址,不知下载cargo包的网址。
RUSTUP_UPDATE_ROOT=http://mirrors.ustc.edu.cn/rust-static/rustup
清华大学
RUSTUP_DIST_SERVER:https://mirrors.tuna.tsinghua.edu.cn/rustup
RUSTUP_UPDATE_ROOT:https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup

设置好以上环境变量,执行rustup-init.exe,安装rust。

安装完成后,验证安装是否成功:

CICV@zj MINGW64 /e/prjs/rustprj/hello_world (master)
$ rustc --version
rustc 1.71.0 (8ede3aae2 2023-07-12)

CICV@zj MINGW64 /e/prjs/rustprj/hello_world (master)
$ cargo --version
cargo 1.71.0 (cfd3bbd8f 2023-06-08)

在系统环境变量的path中添加%CARGO_HOME%\bin



4、建新项目

rust的编译器工具是rustc。
rust的包管理工具叫做cargo。

在一个你事先设置好的目录下,直接运行 cargo new hello_world。此时cargo包管理工具会创建好所有需要的文件和目录。


此时我们看到cargo自动生成了一个src目录,一个cargo.toml 文件,还有对应的main.rs 。

Cargo.toml 就是rust的包管理文件,后续我们的很多操作,都会在cargo.toml 中进行。
而 .rs 文件就是rust的源文件,我们看一下该文件中有什么。


接下来就是编译的过程,编译可以用cargo build 。
但如果我们想直接运行,也是可以的,直接用cargo run 就可以了。
如下所示

其实cargo run 底层应该同样调用的是cargo build。



5、rust的ide

rust官方并没有给一个标准的IDE,推荐visual studio code,但是需要安装如下插件:

  • rust-analyze
  • CodeLLDB
    若要获得调试支持,请安装 CodeLLDB 扩展


6、概念辨析

host-triple: 主机三元组,x86_64-pc-windows-gnu, 主机三元组又被称为target。
channel: 发布频道,stable/beta/nightly
toolchain: 工具链,工具链的名字可以看出,它是由channel-host-triple组成的:channel-host-triple: stable-x86_64-pc-windows-gnu。我们常说的安装rust,指的就是安装rust的工具链,不同版本的rust就是不同的工具链。
component: toolchain 是由 component 组成的。
profile: 配置,工具链的配置,不同的配置包含不同的component。minimal/default/complete

从以上的概念可以看出:toolchain、profile、component这三个概念的关系。toolchain是包含profile,profile包含component。

这里是其他人的解释:
1). channel
Rust 发布在三个不同的 channel 上:stable、beta、nightly,简单说就是三种不同的版本。
stable:Rust 的稳定版本,每 6 周发布一次。
beta:Rust 的公开测试版本,将是下一个 stable 版本。
nightly:每天更新,包含以一些实验性的新特性。
2). toolchain
一套 Rust 组件,包括编译器及其相关工具,并且包含 channel,版本及支持的平台信息。
3). target,也就是host-triple,安装时需要指定的一个安装选项
指编译的目标平台,即:编译后的程序在哪种操作系统上运行。
4). component
toolchain 是由 component 组成的。
查看所有可用和已经安装的组件命令如下:
rustup component list
rustup 默认安装的组件:

  • rustc:Rust 编译器。
  • rust-std:Rust 标准库。
  • cargo:包管理和构建工具。
  • rust-docs:Rust 文档。
  • rustfmt:用来格式化 Rust 源代码。
  • clippy:Rust 的代码检查工具。
    5). profile
    为了方便对 component 进行管理,使用 profile 定义一组 component。
    不同的 profile 包含不同的组件,安装 rustup 时有三种 profile 可选:
    修改 profile 命令如下:
  • rustup set profile minimal


7、配置 cargo 国内镜像,这里是下载项目依赖的cargo包的地方

在 cargo 安装目录下新建 config 文件(注意 config 没有任何后缀),文件内容如下:

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'tuna'

# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

# 中国科学技术大学
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
# 设置代理,可以设置也可以不设置
[http]
proxy = "127.0.0.1:8889"
[https]
proxy = "127.0.0.1:8889"


8 rustup命令的一些用法

# 显示当前工具链信息,rustup是多版本管理工具,所以同时可以安装多个版本的rust,
rustup show
# 检查安装更新
rustup update
# 卸载
rustup self uninstall


# -------------------------->配置工具链
# 查看工具链
rustup toolchain list
# 安装工具链
rustup toolchain install stable-x86_64-pc-windows-gnu
# 卸载工具链
rustup toolchain uninstall stable-x86_64-pc-windows-gnu
# 设置当前默认工具链
rustup default stable-x86_64-pc-windows-gnu
# 设置自定义工具链
rustup toolchain link <toolchain-name> "<toolchain-path>"


# -------------------------->配置一个目录以及其子目录的默认工具链
# 查看已设置的默认工具链
rustup override list
# 设置该目录以及其子目录的默认工具链
rustup override set <toolchain> --path <path>
# 取消目录以及其子目录的默认工具链
rustup override unset --path <path>


# -------------------------->配置工具链的目标
# 查看目标列表
rustup target list
# 安装目标
rustup target add <target>
# 卸载目标
rustup target remove <target>
# 为特定工具链安装目标
rustup target add --toolchain <toolchain> <target>


# -------------------------->配置 rustup 安装的组件
# 查看可用组件
rustup component list
# 安装组件
rustup component add <component>
# 卸载组件
rustup component remove <component>


8、cargo的用法

# 查看cargo版本
cargo --version

# --------------->新建项目
# 新建项目,同时新建项目文件夹
cargo new <project_name>
# 新建项目,在已经存在的文件夹里
cd project_name
cargo init 
# 新建库项目
cargo new prject_name --lib

# -------------->构建管理
# 构建项目,默认是debug模式
cargo build 
# 构建项目,指定release模式
cargo build --release

# --------------->运行项目
# 运行项目
cargo run
# 检查项目
cargo check
# 查看帮助
cargo -h

# -------------->cargo依赖管理
# 安装依赖
cargo add dep_name 
#安装特定版本
cargo add dep_name@version
#安装开发时用的依赖库
cargo add --dev dev_dep_name
#安装构建时用的依赖
cargo add --build build_dep_name
#删除依赖
cargo rm dep_name

cargo install和cargo add的区别

cargo install 主要用于从 crates.io 或其他源安装 Rust 二进制文件。当你想要安装一个可以独立运行的 Rust 程序或工具时,你会使用 cargo install。例如,如果你想安装一个 Rust 编写的命令行工具,你可以通过 cargo install 命令来下载、编译并安装它。这个命令会处理所有的依赖项,并将最终的可执行文件放在你的系统路径中,这样你就可以在命令行中直接运行它了。

cargo add(注意,这个命令在最新的 Cargo 版本中已经被官方集成,成为了 Cargo 的一个子命令,而不再是 cargo-edit 的一部分)则用于向你的 Rust 项目中添加依赖项。当你正在开发一个 Rust 项目,并且需要引入一个新的库或框架时,你可以使用 cargo add 命令。这个命令会自动更新你的 Cargo.toml 文件,添加新的依赖项,并处理相关的版本信息。这样,你就可以在你的项目中使用这个新的依赖项了。

总的来说,cargo install 是用于安装 Rust 二进制文件的,而 cargo add 是用于向 Rust 项目中添加依赖项的。这两个命令在 Rust 开发过程中都非常有用,但它们的功能和用途是不同的。



9、Windows 交叉编译 Linux 程序

目标服务器是 Linux(CentOS 7) 64bit, 所以我们添加的 target 应该是x86_64-unknown-linux-gnu(动态依赖) 或者x86_64-unknown-linux-musl(静态依赖)

解释:

  • 动态依赖:目标服务器需要包含依赖的动态链接库库,也就是动态链接用户共享库
  • 静态依赖,目标服务器不需要包含相应的库,所以需要静态链接,但是最终可执行文件稍大,推荐这种方式。

1). 添加需要的 target
rustup target add x86_64-unknown-linux-musl

2). 在 cargo 安装目录下新建 config 文件(注意 config 没有任何后缀),添加的文件内容如下:
[target.x86_64-unknown-linux-musl]
linker = "rust-lld"

3). 构建,cargo build的时候不光可以指定--debug/--release,还可以指定给哪个target编译,通过--target选项,有点类似于java中的language level,可执行文件的执行平台。
cargo build --target x86_64-unknown-linux-musl



10、安装时使用mingw64的编译器

Rust运行时是需要C语言的编译器的,windows下rust推荐使用visual studio中的编译器,所以在安装rust之前要先安装vs的编译器,可是vs太大了,rust官方推荐安装visual build tool,通过该工具安装一个最小的vs编译器。
但该工具占用空间大安装也较为麻烦,可以使用轻便的mingw64编译器,取代vs的编译器。

1)下载mingw64
下载地址:https://github.com/niXman/mingw-builds-binaries/releases

2)压缩包关键字说明
架构(Architecture):x86_64表示压缩包适用于64位的x86处理器架构。
版本(Version):13.2.0-release表示压缩包的版本号为13.2.0,并且是正式发布的版本。
操作系统平台(Operating System Platform):

  • posix:适用于符合POSIX标准的操作系统,如Linux、UNIX等。
  • win32:适用于32位的Windows操作系统。
    (如果Linux和Window混用选posix;如果只用Windows开发选win32)
    异常处理(Exception Handling):seh:压缩包使用结构化异常处理(Structured Exception Handling)来处理异常。
    运行时库(Runtime Library):
  • msvcrt:压缩包使用Microsoft Visual C++运行时库(MSVCRT)。
  • ucrt:压缩包使用通用C运行时库(UCRT)。
    版本修订(Revision):rev1表示这些压缩包的修订版本号为1。

综上所述,根据自身需求和操作系统选择适合的压缩包。

3) msvcrt和ucrt说明

  • 1、 MSVCRT(Microsoft Visual C++ Runtime):
    MSVCRT是Microsoft Visual C++编译器的旧版运行时库,用于支持在Windows系统上使用Visual C++编译的程序。
    它提供了许多标准C库函数和C++运行时函数的实现,用于支持程序的运行和调试。
    MSVCRT通常与早期的Visual C++版本(如Visual Studio 2010及更早版本)相关联。

  • 2、UCRT(Universal C Runtime):
    UCRT是自Windows 10起引入的新一代运行时库,旨在提供更好的兼容性和性能。
    UCRT是一个通用的C运行时库,用于支持使用C语言编译的程序,而不仅仅是限于Visual C++编译器。
    它提供了对标准C库函数的更新实现,并支持一些新的C标准(如C11标准)。
    UCRT与较新版本的Visual C++(如Visual Studio 2015及更新版本)相关联。

综上所述,UCRT更新推荐开发使用,如果考虑兼容则用MSVCRT

4) 压缩包部署
(1) 此次选择下载x86_64-13.2.0-release-posix-seh-ucrt-rt_v11-rev1.7z包,解压到E:/software/下,得到了E:\software\mingw64\,最后将E:\software\mingw64\bin添加到PATH环境变量中。
(2) cmd窗口输入命令“gcc -V”,正常显示版本信息说明安装成功,如下图:

  1. 安装过程指定指定使用mingw64的gcc编译器。
  • 双击启动安装程序rustup-init,如下图:

  • 上图的1选项要求必须安装C/C++的编译环境,默认是 visual studio安装器,而此次使用mingw64,因此需要手动修改为 2,然后输入 y,如下图:

(5) 继续输入 2,如下图:

(6) 输入 x86_64-pc-windows-gnu 表示安装64位的gnu版本,如下图:

(7) 接下来都是回车,使用默认配置,如下图:

(8) 上面配置完毕后,到最后一步还是回车,然后开始安装;安装过程中要从网络下载很多东西,需耐心等待,其中已下载过的包会自动跳过,如下图:

(9) 看到最后的提示,按下回车退出安装窗口。重新打开一个cmd,验证是否安装成功。

参考资料:

1、https://www.cnblogs.com/xy-zzg/p/14580061.html,讲解了rusthome和cargohome环境变量的设置
2、https://learn.microsoft.com/zh-cn/windows/dev-environment/rust/setup,讲解了如何调试rust,如何在vscode中调试rust。
3、https://mp.weixin.qq.com/s/SDkKstoZCzt0F2-x-wmnaA,这个讲了vscode中的好几个插件,这3篇文章都挺有用的。
4、https://www.jianshu.com/p/73a12ef8e642,安装到自己想要的目录去的方法
5、https://zhuanlan.zhihu.com/p/492412918,详述了rust安装时target使用x86_64-pc-windows-gnu,而不是x86_64-pc-windows-msvc



posted @   zhangzl419  阅读(278)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示