当前位置: 首页 > news >正文

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&#xff1a;安装目标组件步骤 2&#xff1a;安装交叉编译工具链步骤 3&#xff1a;配置环境变…...

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) &#xff1a;将xxx.pt模型转化成 xxx.onnx ONNX&#xff08;Ope…...

提示工程:少样本提示(Few-shot Prompting)

少样本提示&#xff08;Few-shot Prompting&#xff09;是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力&#xff0c;通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…...

方舟字节码原理剖析:架构、特性与实践应用

方舟字节码原理剖析&#xff1a;架构、特性与实践应用 一、引言 在当今软件行业高速发展的大背景下&#xff0c;应用程序的性能、开发效率以及跨平台兼容性成为了开发者们关注的核心要素。编译器作为软件开发流程中的关键工具&#xff0c;其性能和特性直接影响着软件的质量和…...

深入Linux系列之环境变量

深入Linux系列之环境变量 那么在之前的内容中&#xff0c;我们已经介绍了我们Linux进程的一些关键属性&#xff0c;例如进程编号以及进程状态和进程优先级&#xff0c;那么本篇文章接介绍Linux的环境变量这一知识点&#xff0c;那么废话不多说&#xff0c;我们进入环境变量的讲…...

国产编辑器EverEdit - Web预览功能

1 Web预览 1.1 应用场景 在编辑HTML文件时&#xff0c;可以通过EverEdit的Web预览功能&#xff0c;方便用户随时观察和调整HTML代码。 1.2 使用方法 1.2.1 使用EverEdit内部浏览器预览 选择主菜单查看 -> Web预览&#xff0c;或使用快捷键Ctrl B&#xff0c;即可打开Ev…...

C#中的Frm_Welcome.Instance.Show(),是什么意思

Frm_Welcome.Instance.Show() 是一种常见的单例模式&#xff08;Singleton Pattern&#xff09;实现方式&#xff0c;通常用于在应用程序中确保某个窗体&#xff08;Form&#xff09;只有一个实例&#xff0c;并通过该实例显示窗体。以下是对这段代码的详细解释&#xff1a; 代…...

07苍穹外卖之redis缓存商品、购物车(redis案例缓存实现)

课程内容 缓存菜品 缓存套餐 添加购物车 查看购物车 清空购物车 功能实现&#xff1a;缓存商品、购物车 效果图&#xff1a; 1. 缓存菜品 1.1 问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压…...

C++开发(软件开发)常见面试题

目录 1、C里指针和数组的区别 2、C中空指针请使用nullptr不要使用NULL 3、http/https区别和头部结构&#xff1f; 4、有了mac地址为什么还要ip地址&#xff1f;ip地址的作用 5、有了路由器为什么还要交换机&#xff1f; 6、面向对象三大特性 7、友元函数 8、大端小端 …...

人工智能-A*算法与卷积神经网络(CNN)结合实现路径规划

以下是一个将 A* 算法与卷积神经网络(CNN)结合实现路径规划的代码示例。主要思路是使用 A* 算法生成训练数据,然后用这些数据训练一个 CNN 模型,让 CNN 学习如何预测路径,最后使用训练好的 CNN 模型进行路径规划。 代码实现 import numpy as np import heapq import tor…...

蓝桥杯备赛——进制转化相关问题

目录 一、基础概念 二、问题研究&#xff08;1&#xff09; 代码解读&#xff1a; 1. transfer 函数 代码功能概述 详细步骤 2. main 函数 代码功能概述 详细步骤 三、运用递归解决 &#xff08;一&#xff09; 代码如下&#xff1a; 代码解读&#xff1a; &#…...

DevOps的个人学习

一、DevOps介绍 软件开发最初是由两个团队组成&#xff1a; 开发团队&#xff1a;负责设计和构建系统。运维团队&#xff1a;负责测试代码后部署上线&#xff0c;确保系统稳定安全运行。 这两个看似目标不同的团队需要协同完成一个软件的开发。DevOps整合了开发与运维团队&a…...

使用Pytorch训练一个图像分类器

一、准备数据集 一般来说&#xff0c;当你不得不与图像、文本或者视频资料打交道时&#xff0c;会选择使用python的标准库将原始数据加载转化成numpy数组&#xff0c;甚至可以继续转换成torch.*Tensor。 对图片而言&#xff0c;可以使用Pillow库和OpenCV库对视频而言&#xf…...

《ARM64体系结构编程与实践》学习笔记(四)

MMU内存管理 1.MMU内存管理&#xff08;armv8.6手册的D5章节&#xff09;&#xff0c;MMU包含快表TLB&#xff0c;TLB是对页表的部分缓存&#xff0c;页表是存放在内存里面的。 AArch64仅仅支持Long Descriptor的页表格式&#xff0c;AArch32支持两种页表格式Armv7-A Short De…...

01-SDRAM控制器的设计——案例总概述

本教程重点▷▷▷ 存储器简介。 介绍 SDRAM 的工作原理。 详细讲解SDRAM 控制的Verilog 实现方法。 PLL IP和FIFO IP 的调用&#xff0c;计数器设计&#xff0c;按键边沿捕获&#xff0c;数码管控制。 完成SDRAM控制器应用的完整案例。 Signal Tap 调试方法。 准备工作▷…...

京准:NTP卫星时钟服务器对于DeepSeek安全的重要性

京准&#xff1a;NTP卫星时钟服务器对于DeepSeek安全的重要性 京准&#xff1a;NTP卫星时钟服务器对于DeepSeek安全的重要性 在网络安全领域&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击一直是企业和网络服务商面临的重大威胁之一。随着攻击技术的不断演化…...

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、报错情况 下载&#xff1a;https://gitcode.com/yangzongzhuan/RuoYi-Vue-Oracle 用idea打开&#xff0c;启动&#xff1a; 日志有报错&#xff1a; 点右侧m图标&#xff0c;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…...

【狂热算法篇】并查集:探秘图论中的 “连通神器”,解锁动态连通性的神秘力量

嘿&#xff0c;朋友们&#xff01;喜欢这个并查集的讲解吗 记得点个关注哦&#xff0c;让我们一起探索算法的奥秘&#xff0c;别忘了一键三连&#xff0c;你的支持是我最大的动力&#xff01; 欢迎拜访&#xff1a;羑悻的小杀马特.-CSDN博客 本篇主题&#xff1a;深度剖析并查…...

技术速递|底层机制:GitHub Agentic Workflows 的安全架构

作者&#xff1a;Landon Cox & Jiaxiao Zhou排版&#xff1a;Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...

Rufus高效使用实战指南:精通ext2/ext3/ext4文件系统格式化

Rufus高效使用实战指南&#xff1a;精通ext2/ext3/ext4文件系统格式化 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus 在Linux系统管理和开发工作中&#xff0c;USB设备的格式化与启动盘制作是一…...

智能硬件适配引擎:让黑苹果EFI配置从技术难题到即插即用的革新方案

智能硬件适配引擎&#xff1a;让黑苹果EFI配置从技术难题到即插即用的革新方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 当你第三次尝试启动黑苹…...

提升开发效率的字体优化指南:Source Code Pro个性化配置实践

提升开发效率的字体优化指南&#xff1a;Source Code Pro个性化配置实践 【免费下载链接】source-code-pro Monospaced font family for user interface and coding environments 项目地址: https://gitcode.com/gh_mirrors/so/source-code-pro 长时间编码导致的视觉疲劳…...

高效智能抖音直播下载工具:一站式解决方案

高效智能抖音直播下载工具&#xff1a;一站式解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过精彩的抖音直播而遗憾&#xff1f;是否想要保存喜欢的直播内容却苦于没有合适的工具&a…...

MinIO装好了然后呢?手把手教你配置S3客户端并上传第一个文件(Python/Go示例)

MinIO实战入门&#xff1a;从零配置到多语言文件操作指南 当你第一次登录MinIO控制台&#xff0c;面对空荡荡的界面可能会感到茫然——这就像拿到了一把万能钥匙却不知道门在哪里。本文将带你跨过"安装成功"到"实际使用"的鸿沟&#xff0c;从获取凭证到完成…...

解决大模型推理中的c10::Half与float类型不匹配:从错误到实战修复

大模型半精度推理实战&#xff1a;彻底解决c10::Half与float类型冲突 当你第一次看到RuntimeError: expected m1 and m2 to have the same dtype, but got: float ! c10::Half这样的错误时&#xff0c;是不是感觉像在解一道没有提示的谜题&#xff1f;作为处理过数十个类似案例…...

百川2-13B-4bits量化模型微基准测试:OpenClaw常用任务性能对比

百川2-13B-4bits量化模型微基准测试&#xff1a;OpenClaw常用任务性能对比 1. 测试背景与动机 上周在折腾OpenClaw自动化办公流程时&#xff0c;发现我的RTX 3090显卡在运行13B模型时显存频繁告警。这让我开始关注量化模型的实际表现——特别是当OpenClaw需要连续调用模型完成…...

res-downloader高效配置指南:全平台资源捕获从入门到精通

res-downloader高效配置指南&#xff1a;全平台资源捕获从入门到精通 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.…...

绕过RK3588的RGA坑:手把手教你修改YOLOv8分割模型部署代码,用CPU预处理替代硬件加速

RK3588部署YOLOv8分割模型的稳定化实践&#xff1a;从RGA报错到CPU预处理方案优化 当你在RK3588开发板上部署YOLOv8分割模型时&#xff0c;是否遇到过这样的场景&#xff1a;模型转换和交叉编译一切顺利&#xff0c;却在运行时突然弹出"Failed to call RockChipRga interf…...