Rust 交叉编译环境搭建
一、安装Rust
1. 官方安装
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
安装时可能存在流量不稳定导致安装失败,可以更换源,使用国内的crates.io镜像。
2. 更换Rust镜像源进行安装
(1) 更换Rustup镜像源
修改~/.bashrc, 追加如下内容
export RUSTUP_DIST_SERVER="https://rsproxy.cn" export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
(2) 更换crates.io镜像源
在~/.cargo/目录下新建 config.toml (cargo 1.38及以前的版本使用文件名config)
[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" replace-with = "ustc" #或rustcc、sjtu、tuna # 根据replace-with配置的镜像源,以下只需配置一个对应的源即可 # 中国科大 [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index" # rustcc社区 [source.rustcc] registry = "https://code.aliyun.com/rustcc/crates.io-index.git" # 上海交通大学 [source.sjtu] registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" # 清华大学 [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
(3)重新执行安装脚本
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
二、交叉编译ARM目标
1. 将ARM添加为Rust目标平台
$ rustup target list #可以查看所有可添加的目标平台
$ rustup target add arm-unknown-linux-gnueabihf #本例添加 arm-unknown-linux-gnueabihf
2. 在 ~/.cargo/config.toml 中指定ARM目标的链接器
[target.arm-unknown-linux-gnueabihf] linker = "arm-none-linux-gnueabihf-gcc"
#cargo build 需加 --target arm-unknown-linux-gnueabihf
[build] target = "arm-unknown-linux-gnueabihf"
#这样cargo build默认就是构建 arm-unknown-linux-gnueabihf
[alias]
build_arm = "build --target arm-unknown-linux-gnueabihf"
#这样设置别名后可以直接 cargo build_arm 来缩短构建命令
三、HelloWorld示例
1. 使用cargo创建项目
$ cargo new rust_helloworld --bin
cargo将创建项目目录rust_helloworld, 其下包含Cargo.toml和src/main.rs
2. 交叉编译ARM目标文件
$ cargo build --release #因在config.toml中配置了[build] target为arm-unknonw-linux-guneabihf,所以默认生成arm目标
#或者
$ cargo build --release --target arm-unknown-linux-gnueabihf
cargo 将生成目标目录target,bin文件存放在 target/arm-unknown-linux-gnueabihf/release/
3. 编译本地架构的目标文件
$ cargo build --release --target x86_64-unknown-linux-gnu #本例PC为x64架构

浙公网安备 33010602011771号