编辑
2024-01-15
工作知识
0
请注意,本文编写于 508 天前,最后修改于 451 天前,其中某些信息可能已经过时。

目录

[Rust]安装环境
必要工具
国内源
官网安装
版本介绍
交叉编译
使用
参考链接

[Rust]安装环境

公司的虚拟化方案是用rust重构的,为了搭建环境,又开始起来的rust。哎,太菜了太菜了。以前学的东西脑子里全丢了。这里补一个rust环境配置。切记,rust不要想用ubuntu源里面的,直接根据文档使用最新的版本

必要工具

apt install curl rsync gdb-multiarch openocd cargo doxygen qemu-user-static \ build-essential libncurses5-dev libssl-dev libgtk2.0-dev libglib2.0-dev

国内源

vim ~/.bash_profile export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

官网安装

curl -L https://static.rust-lang.org/rustup.sh -O sh rustup.sh
Current installation options: default host triple: x86_64-unknown-linux-gnu default toolchain: stable (default) profile: default modify PATH variable: yes 1) Proceed with installation (default) 2) Customize installation 3) Cancel installation

选择自定义,配置最后如下:

default host triple: x86_64-unknown-linux-gnu default toolchain: nightly profile: complete modify PATH variable: yes

最后安装好了获得如下提示

nightly-x86_64-unknown-linux-gnu installed - rustc 1.77.0-nightly (30dfb9e04 2024-01-14)
source ~/.bashrc rustc --version rustc 1.59.0 rustup --version rustup 1.26.0 (5af9b9484 2023-04-05) info: This is the version for the rustup toolchain manager, not the rustc compiler. info: The currently active `rustc` version is `rustc 1.77.0-nightly (30dfb9e04 2024-01-14)`

这样,rust就安装好了

版本介绍

rust默认是安装stable版本,但是有nightly和beta版本可选,其用到了"火车发布模型",rust特地规定了stable无法使用打上feature flags的功能,而我们的仓库就是这种,所以我只好选择nightly。简单理解如下:

  • Nightly:正在开发的版本、每晚自动构建、自动发布
  • Beta:测试版本,每6周从Nightly生成一次,包含新特性
  • Stable:稳定版本,每6周从Beta生成一次

关于版本的详细了解如下链接:

https://rustwiki.org/zh-CN/book/appendix-07-nightly-rust.html

否则会出现如下错误:

`#![feature]` may not be used on the stable release channel

如果需要切换stable和nightly或beta,如下

rustup default stable/nightly/beta

交叉编译

rustc --print target-list
rustup target add aarch64-unknown-linux-gnu

下载编译工具链

wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz xz -d gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz tar xvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar

配置工具链

vim ~/.cargo/config [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = 'ustc' [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" [build] target = "aarch64-unknown-linux-gnu" [target.aarch64-unknown-linux-gnu] linker = "aarch64-none-linux-gnu-gcc"

使用

cargo new hello --bin cd hello && cargo build

如果想要编译x86的,如下即可

cargo build --target=x86_64-unknown-linux-gnu

参考链接

Rust文档还是很全的,如下:

https://www.kancloud.cn/thinkphp/rust/36040
https://kaisery.github.io/trpl-zh-cn/ch01-01-installation.html
https://forge.rust-lang.org/index.html
https://doc.rust-lang.org/book/second-edition/foreword.html