89 lines
2.3 KiB
Markdown
89 lines
2.3 KiB
Markdown
---
|
||
title: "Rust 笔记"
|
||
date: 2021-08-29T15:02:13+08:00
|
||
lastmod: 2021-08-29T15:02:13+08:00
|
||
keywords: []
|
||
tags: []
|
||
categories: ["dev/ops"]
|
||
---
|
||
|
||
## 安装 rust
|
||
- 安装 rustup,参考官网
|
||
```bash
|
||
export RUST_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup
|
||
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
|
||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||
# 按照提示,一直 default 即可
|
||
```
|
||
|
||
- 配置 rustup、toolchain 和 target 更新源
|
||
```bash
|
||
cat >> /etc/profile.d/rustup.sh <<-EOF
|
||
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
|
||
EOF
|
||
```
|
||
|
||
- 配置 crate 源
|
||
```bash
|
||
cat >> ~/.cargo/config <<-EOF
|
||
[source.crates-io]
|
||
replace-with = 'tuna'
|
||
|
||
[source.tuna]
|
||
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
|
||
EOF
|
||
```
|
||
|
||
## 交叉编译
|
||
### 树梅派 Alpine armv7/armhf
|
||
- 下载交叉编译工具
|
||
```bash
|
||
curl -LO https://musl.cc/armv7l-linux-musleabihf-cross.tgz
|
||
tar zxf armv7l-linux-musleabihf-cross.tgz -C /opt/
|
||
export PATH=/opt/armv7l-linux-musleabihf-cross/bin/:$PATH
|
||
```
|
||
|
||
- 配置 target
|
||
```bash
|
||
rustup target add armv7-unknown-linux-musleabihf
|
||
cat >> ~/.cargo/config <<-EOF
|
||
[target.armv7-unknown-linux-musleabihf]
|
||
linker = "armv7l-linux-musleabihf-ld"
|
||
EOF
|
||
```
|
||
|
||
- 编译
|
||
```bash
|
||
# 操作系统如果是 armv7,则需指定该 cflag 来禁用 fpu
|
||
export CFLAGS='-mfpu=neon'
|
||
|
||
export CC=armv7l-linux-musleabihf-gcc
|
||
cargo build --target armv7-unknown-linux-musleabihf --release
|
||
armv7l-linux-musleabihf-strip target/armv7-unknown-linux-musleabihf/release/{目标二进制文件}
|
||
```
|
||
|
||
### 树梅派 Alpine aarch64
|
||
- 下载交叉编译工具
|
||
```bash
|
||
curl -LO https://musl.cc/aarch64-linux-musl-cross.tgz
|
||
tar zxf aarch64-linux-musl-cross.tgz -C /opt/
|
||
export PATH=/opt/aarch64-linux-musl-cross/bin/:$PATH
|
||
```
|
||
|
||
- 配置 target
|
||
```bash
|
||
rustup target add aarch64-unknown-linux-musl
|
||
cat >> ~/.cargo/config <<-EOF
|
||
[target.aarch64-unknown-linux-musl]
|
||
linker = "aarch64-linux-musl-ld"
|
||
EOF
|
||
```
|
||
|
||
- 编译
|
||
```bash
|
||
export CC=aarch64-linux-musl-gcc
|
||
cargo build --target aarch64-unknown-linux-musl --release
|
||
aarch64-linux-musl-strip target/aarch64-unknown-linux-musl/release/{目标二进制文件}
|
||
```
|
||
|