交叉编译
学习目标
- 理解交叉编译概念
- 掌握 target 配置
- 了解 cross 工具
核心概念
基本交叉编译
rustup target add aarch64-unknown-linux-gnu
rustup target add x86_64-pc-windows-gnu
cargo build --target aarch64-unknown-linux-gnu
cargo build --target x86_64-pc-windows-gnu
常用目标
| 目标 | 说明 |
|---|
x86_64-unknown-linux-gnu | Linux x64 |
aarch64-unknown-linux-gnu | Linux ARM64 |
x86_64-apple-darwin | macOS x64 |
aarch64-apple-darwin | macOS ARM64 |
x86_64-pc-windows-gnu | Windows x64 |
wasm32-unknown-unknown | WebAssembly |
cross 工具
cargo install cross
cross build --target aarch64-unknown-linux-gnu
cross build --target arm-unknown-linux-gnueabihf
cross run --target aarch64-unknown-linux-gnu
链接器配置
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
环境变量
export CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc
export CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++
小结
| 工具 | 用途 |
|---|
rustup target add | 添加编译目标 |
cargo build --target | 指定目标编译 |
cross | Docker 容器化交叉编译 |
.cargo/config.toml | 链接器配置 |