2024 Rust现代实用教程:1.1Rust简介与安装更新

news/2025/2/13 5:06:11/
文章目录
  • 一、Rust安装
  • 二、更新Rust
  • 三、Rust的Stable与Nightly版本
  • 四、卸载ubuntu安装的cargo和rustup
  • 五、rust源设置
  • 六、rust交叉编译工具链说明
    • rustup稳定版交叉编译步骤
      • 步骤 1:安装目标组件
      • 步骤 2:安装交叉编译工具链
      • 步骤 3:配置环境变量
        • 配置 CARGO_TARGET_<TARGET_TRIPLE>_LINKER
      • 步骤 4:指定目标架构进行构建
      • 调试技巧
  • 参考

一、Rust安装

link:https://www.rust-lang.org/zh-CN/tools/install

Windows 的 Linux 子系统(WSL)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

参考:

  • RUST安装慢怎么办,使用镜像方式安装

设置环境变量

设置环境变量 RUSTUP_DIST_SERVER (用于更新 toolchain):
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-staticRUSTUP_UPDATE_ROOT (用于更新 rustup):
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

下载镜像安装脚本

wget https://cdn.jsdelivr.net/gh/rust-lang-nursery/rustup.rs/rustup-init.sh

执行安装脚本

sh rustup-init.sh

1 使用默认配置,2 使用自定义配置,3 取消安装
这里我们选择默认配置输入 1

配置cargo的环境变量

source $HOME/.cargo/env

测试一下安装结果
输入cargo ,按两下 tab键,进行命令补全提示,可以看到命令已经出来了

在这里插入图片描述

好了,rust环境已经安装成功了!

安装注意事项
(1)如果使用了上述方法安装,就不要使用ubuntu apt的方式进行安装。如果安装了,请卸载

sudo apt remove cargo rustc
sudo apt autoremove
sudo apt clean

(2)“/usr/lib/rustlug/src/rust/library/Cargo.lock” does not exist, unable to build with the standard library, try: rustup conponent add rust-src --toolchain nightly-x86_64-unknown0linux-gnu
在这里插入图片描述

如果执行component还是出现以上问题,很大原因是是因为使用了apt方式安装的rust与脚本安装的rust冲突了。一定要删除所有apt源安装的rust工具。
保证所有工具都是脚本安装的
 which rustc
/home/wangji/.cargo/bin/rustc
 which rustup
/home/wangji/.cargo/bin/rustup
 which cargo
/home/wangji/.cargo/bin/cargo

二、更新Rust

更新rust

$ rustup update

卸载Rust

rustup  self uninstall

添加组件

rustup component add rustfmt

查看版本

rustup --version

三、Rust的Stable与Nightly版本

·1.Stable:这是最稳定和可靠的版本,适用于大多数生产环境的应用程序。Rust的稳定版经过了广泛测试和验证,确保了向后兼容性,这意味着你编写的代码在未来的稳定版本中仍然可以运行。

·2.Nightly:这是每天构建的最新版本,包含最新的功能和实验性质的特性。夜版是Rust的开发版本,通常包含最新的语言特性和实验性质的改进,但也可能包含一些不稳定的内容。因此,它不适用于生产环境,但可以用于尝试最新的语言功能或为Rust的发展做贡献。

安装:rustup install stable/nightly,nightly是一些新的特性
切换:rustup default stable/nightly

查看rust版本

? rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/wangji/.rustupstable-x86_64-unknown-linux-gnu (default)
rustc 1.82.0 (f6e511eec 2024-10-15)

安装nightly版本

? rustup default nightly? rustup show
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/wangji/.rustupinstalled toolchains
--------------------stable-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu (default)active toolchain
----------------nightly-x86_64-unknown-linux-gnu (default)
rustc 1.84.0-nightly (a93c1718c 2024-10-24)? code

查看当前使用的stable版本还是nightly版本

rustup show active-toolchain

切换为nightly版本

配置环境变量加速

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup? rustup default nightly
info: using existing install for 'nightly-x86_64-unknown-linux-gnu'
info: default toolchain set to 'nightly-x86_64-unknown-linux-gnu'nightly-x86_64-unknown-linux-gnu unchanged - rustc 1.84.0-nightly (a93c1718c 2024-10-24)? code ?   在这里插入代码片

切换成稳定版本

rustup default stable

rustup_180">四、卸载ubuntu安装的cargo和rustup

如果你使用 apt 包管理器安装了 Rust 和 Cargo,可以运行以下命令卸载:
sudo apt remove cargo rustc之后,可以使用以下命令来清理缓存和依赖:
sudo apt remove cargo rustc

rust_190">五、rust源设置

  • Rust安装及配置

rust_195">六、rust交叉编译工具链说明

针对于stable的cargo而言

rustup查看能够下载的交叉编译工具链

rustup target list

rustup查看已经安装的交叉编译工具链

rustup target list --installed
aarch64-unknown-linux-gnu
arm-unknown-linux-gnueabihf
x86_64-unknown-linux-gnu

rustup下载交叉编译工具链

rustup target add

查看rustc可以支持的交叉编译的target

rustc --print target-list

rustup_223">rustup稳定版交叉编译步骤

支持 Rust 的交叉编译,尤其是在安装了所需目标组件后,涉及多个步骤,包括设置正确的工具链、配置链接器和交叉编译工具链,以及确保你的目标平台的库和工具链可用。

步骤 1:安装目标组件

首先,确保你已经通过 rustup 安装了目标组件

rustup target add aarch64-unknown-linux-gnu
rustup target add armv7-unknown-linux-gnueabihf
rustup target add x86_64-unknown-linux-gnu

这些命令会为目标架构安装 Rust 标准库和工具链组件。你可以通过 rustup target list --installed 来确认目标是否已正确安装。

步骤 2:安装交叉编译工具链

Rust 本身的工具链并不包括为其他平台编译所需的 C 语言工具链和链接器

示例:为 armv7-unknown-linux-gnueabihf 安装交叉编译工具链
如果你正在为 armv7-unknown-linux-gnueabihf(32 位 ARM)进行交叉编译,你需要安装 ARM 工具链。对于 Ubuntu 或 Debian 系统,你可以通过以下命令来安装:

sudo apt-get update
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

类似地,如果你要为 64 位 ARM (aarch64-unknown-linux-gnu) 交叉编译,可以安装:

sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
步骤 3:配置环境变量

通过设置环境变量 CARGO_TARGET_<TARGET_TRIPLE>_LINKER,你可以告诉 cargo 使用哪些工具链。

配置 CARGO_TARGET_<TARGET_TRIPLE>_LINKER

假设你正在为 armv7-unknown-linux-gnueabihf 交叉编译,并且已安装了 gcc-arm-linux-gnueabihf,你可以设置以下环境变量:

export CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc

如果你为 64 位 ARM 编译(aarch64-unknown-linux-gnu),则需要设置:

export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc

配置 AR 和其他工具链,还可能需要设置 ar
export CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_AR=arm-linux-gnueabihf-ar
对于 64 位 ARM(aarch64-unknown-linux-gnu),export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_AR=aarch64-linux-gnu-ar

步骤 4:指定目标架构进行构建

设置好交叉编译工具链后,使用 cargo build 命令指定目标架构来进行交叉编译。例如,如果你要为 armv7-unknown-linux-gnueabihf 架构编译:

cargo build --target armv7-unknown-linux-gnueabihf --release

对于 64 位 ARM 架构:

cargo build --target aarch64-unknown-linux-gnu --release
调试技巧

查看编译输出:

  • 使用 cargo build --target 时,可以加上 -v 或 --verbose 标志,查看详细的编译输出。这样可以帮助你诊断构建过程中的问题。

    cargo build --target armv7-unknown-linux-gnueabihf --verbose
    cargo build --target armv7-unknown-linux-gnueabihf -vv

使用 strip 或调试符号:如果你不需要调试符号,可以使用 strip 来去除它们,减小二进制文件的大小,尤其是在嵌入式开发中非常有用。

cargo build --target armv7-unknown-linux-gnueabihf --release
strip target/armv7-unknown-linux-gnueabihf/release/your_program

参考

  • Rust简介与安装更新

http://www.ppmy.cn/news/1571617.html

相关文章

【设计模式】【行为型模式】模板方法模式(Template Method)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f4eb; 欢迎V&#xff1a; flzjcsg2&#xff0c;我们共同讨论Java深渊的奥秘 &#x1f…

深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具

在软件开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种重要的设计模式&#xff0c;它可以帮助我们降低代码的耦合度&#xff0c;提高代码的可测试性和可维护性。Go 语言作为一门高效、简洁的编程语言&#xff0c;拥有许多优…

网络编程(udp tcp)

组播通讯&#xff1a; 发送端实现步骤&#xff1a;创建 UDP 类型的套接字设置组播地址和组播端口向组播地址和组播端口发送数据可以接收回复的数据关闭套接字 2.接收端实现步骤&#xff1a; 1.创建UDP类型的套接字 2.绑定任意IP,组播端口到套接字上 3.加入组播组&#xff08;设…

Lisp语言的软件工程

Lisp语言在软件工程中的应用 引言 在计算机科学的发展历程中&#xff0c;编程语言的演变见证了技术的不断进步与理论的深入探索。Lisp&#xff08;LISt Processing&#xff09;作为一种历史悠久的编程语言&#xff0c;自1958年问世以来&#xff0c;已经走过了超过六十年的风雨…

C# OpenCV机器视觉:颜色量化法提取主色

在热闹繁华的广告设计圈里&#xff0c;阿强是个怀揣无限创意&#xff0c;却总被颜色搭配折腾得焦头烂额的设计师。每次接到项目&#xff0c;面对那些色彩斑斓的素材图片&#xff0c;他就像迷失在彩色迷宫里的小可怜。 “哎呀呀&#xff0c;这么多颜色&#xff0c;到底哪个才是…

【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)

官方代码https://github.com/dongbeank/CATS Abstract 时间序列预测在多领域极为关键&#xff0c;Transformer 虽推进了该领域发展&#xff0c;但有效性尚存争议&#xff0c;有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用&#xff0c;提…

华硕笔记本怎么一键恢复出厂系统_华硕笔记本一键恢复出厂系统教程

华硕笔记本怎么一键恢复出厂系统&#xff1f; 华硕一键恢复出厂系统是一个安全、高效、方便的恢复方式&#xff0c;让您轻松还原出厂设置&#xff0c;以获得更好的系统性能。如果您的华硕电脑遇到问题&#xff0c;可以使用华硕一键恢复出厂系统功能。下面小编就教大家华硕笔记本…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_show_version_info函数

声明 在 nginx.c 开头 static void ngx_show_version_info(void); 实现 static void ngx_show_version_info(void) {ngx_write_stderr("nginx version: " NGINX_VER_BUILD NGX_LINEFEED);if (ngx_show_help) {ngx_write_stderr("Usage: nginx [-?hvVtTq] [-s s…