2024 Rust现代实用教程:1.1Rust简介与安装更新
文章目录
- 一、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
四、卸载ubuntu安装的cargo和rustup
如果你使用 apt 包管理器安装了 Rust 和 Cargo,可以运行以下命令卸载:
sudo apt remove cargo rustc之后,可以使用以下命令来清理缓存和依赖:
sudo apt remove cargo rustc
五、rust源设置
- Rust安装及配置
六、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稳定版交叉编译步骤
支持 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简介与安装更新
相关文章:
2024 Rust现代实用教程:1.1Rust简介与安装更新
文章目录 一、Rust安装二、更新Rust三、Rust的Stable与Nightly版本四、卸载ubuntu安装的cargo和rustup五、rust源设置六、rust交叉编译工具链说明 rustup稳定版交叉编译步骤 步骤 1:安装目标组件步骤 2:安装交叉编译工具链步骤 3:配置环境变…...
yolov11模型在Android设备上运行【踩坑记录】
0) 参考资料: https://github.com/Tencent/ncnn?tabreadme-ov-file https://github.com/pnnx/pnnx https://github.com/nihui/ncnn-android-yolov5 https://github.com/Tencent/ncnn?tabreadme-ov-file 1) :将xxx.pt模型转化成 xxx.onnx ONNX(Ope…...
提示工程:少样本提示(Few-shot Prompting)
少样本提示(Few-shot Prompting)是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力,通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…...
方舟字节码原理剖析:架构、特性与实践应用
方舟字节码原理剖析:架构、特性与实践应用 一、引言 在当今软件行业高速发展的大背景下,应用程序的性能、开发效率以及跨平台兼容性成为了开发者们关注的核心要素。编译器作为软件开发流程中的关键工具,其性能和特性直接影响着软件的质量和…...
深入Linux系列之环境变量
深入Linux系列之环境变量 那么在之前的内容中,我们已经介绍了我们Linux进程的一些关键属性,例如进程编号以及进程状态和进程优先级,那么本篇文章接介绍Linux的环境变量这一知识点,那么废话不多说,我们进入环境变量的讲…...
国产编辑器EverEdit - Web预览功能
1 Web预览 1.1 应用场景 在编辑HTML文件时,可以通过EverEdit的Web预览功能,方便用户随时观察和调整HTML代码。 1.2 使用方法 1.2.1 使用EverEdit内部浏览器预览 选择主菜单查看 -> Web预览,或使用快捷键Ctrl B,即可打开Ev…...
C#中的Frm_Welcome.Instance.Show(),是什么意思
Frm_Welcome.Instance.Show() 是一种常见的单例模式(Singleton Pattern)实现方式,通常用于在应用程序中确保某个窗体(Form)只有一个实例,并通过该实例显示窗体。以下是对这段代码的详细解释: 代…...
07苍穹外卖之redis缓存商品、购物车(redis案例缓存实现)
课程内容 缓存菜品 缓存套餐 添加购物车 查看购物车 清空购物车 功能实现:缓存商品、购物车 效果图: 1. 缓存菜品 1.1 问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压…...
C++开发(软件开发)常见面试题
目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构? 4、有了mac地址为什么还要ip地址?ip地址的作用 5、有了路由器为什么还要交换机? 6、面向对象三大特性 7、友元函数 8、大端小端 …...
人工智能-A*算法与卷积神经网络(CNN)结合实现路径规划
以下是一个将 A* 算法与卷积神经网络(CNN)结合实现路径规划的代码示例。主要思路是使用 A* 算法生成训练数据,然后用这些数据训练一个 CNN 模型,让 CNN 学习如何预测路径,最后使用训练好的 CNN 模型进行路径规划。 代码实现 import numpy as np import heapq import tor…...
蓝桥杯备赛——进制转化相关问题
目录 一、基础概念 二、问题研究(1) 代码解读: 1. transfer 函数 代码功能概述 详细步骤 2. main 函数 代码功能概述 详细步骤 三、运用递归解决 (一) 代码如下: 代码解读: &#…...
DevOps的个人学习
一、DevOps介绍 软件开发最初是由两个团队组成: 开发团队:负责设计和构建系统。运维团队:负责测试代码后部署上线,确保系统稳定安全运行。 这两个看似目标不同的团队需要协同完成一个软件的开发。DevOps整合了开发与运维团队&a…...
使用Pytorch训练一个图像分类器
一、准备数据集 一般来说,当你不得不与图像、文本或者视频资料打交道时,会选择使用python的标准库将原始数据加载转化成numpy数组,甚至可以继续转换成torch.*Tensor。 对图片而言,可以使用Pillow库和OpenCV库对视频而言…...
《ARM64体系结构编程与实践》学习笔记(四)
MMU内存管理 1.MMU内存管理(armv8.6手册的D5章节),MMU包含快表TLB,TLB是对页表的部分缓存,页表是存放在内存里面的。 AArch64仅仅支持Long Descriptor的页表格式,AArch32支持两种页表格式Armv7-A Short De…...
01-SDRAM控制器的设计——案例总概述
本教程重点▷▷▷ 存储器简介。 介绍 SDRAM 的工作原理。 详细讲解SDRAM 控制的Verilog 实现方法。 PLL IP和FIFO IP 的调用,计数器设计,按键边沿捕获,数码管控制。 完成SDRAM控制器应用的完整案例。 Signal Tap 调试方法。 准备工作▷…...
京准:NTP卫星时钟服务器对于DeepSeek安全的重要性
京准:NTP卫星时钟服务器对于DeepSeek安全的重要性 京准:NTP卫星时钟服务器对于DeepSeek安全的重要性 在网络安全领域,分布式拒绝服务(DDoS)攻击一直是企业和网络服务商面临的重大威胁之一。随着攻击技术的不断演化…...
uniapp访问django目录中的图片和视频,2025[最新]中间件访问方式
新建中间件, middleware.py 匹配,以/cover_image/ 开头的图片 匹配以/episode_video/ 开头的视频 imageSrc: http://192.168.110.148:8000/cover_image/12345/1738760890657_mmexport1738154397386.jpg, videoSrc: http://192.168.110.148:8000/episode_video/12345/compres…...
RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决
RuoYi-Vue-Oracle的oracle driver驱动配置问题ojdbc8-12.2.0.1.jar的解决 1、报错情况 下载:https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle 用idea打开,启动: 日志有报错: 点右侧m图标,maven有以下报误 &…...
python脚本实现windows电脑内存监控内存清理(类似rammap清空工作集功能)
import ctypes import psutil import time import sys import os from datetime import datetime import pyautogui# 检查管理员权限 def is_admin():try:return ctypes.windll.shell32.IsUserAnAdmin()except:return False# 内存清理核心功能 def cleanup_memory(aggressivene…...
【狂热算法篇】并查集:探秘图论中的 “连通神器”,解锁动态连通性的神秘力量
嘿,朋友们!喜欢这个并查集的讲解吗 记得点个关注哦,让我们一起探索算法的奥秘,别忘了一键三连,你的支持是我最大的动力! 欢迎拜访:羑悻的小杀马特.-CSDN博客 本篇主题:深度剖析并查…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
