98·跨平台高级

交叉编译

交叉编译

学习目标

  1. 理解交叉编译概念
  2. 掌握 target 配置
  3. 了解 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-gnuLinux x64
aarch64-unknown-linux-gnuLinux ARM64
x86_64-apple-darwinmacOS x64
aarch64-apple-darwinmacOS ARM64
x86_64-pc-windows-gnuWindows x64
wasm32-unknown-unknownWebAssembly

cross 工具

# 安装 cross(使用 Docker 容器化编译)
cargo install cross

# 使用 cross 编译
cross build --target aarch64-unknown-linux-gnu
cross build --target arm-unknown-linux-gnueabihf

# 运行
cross run --target aarch64-unknown-linux-gnu

链接器配置

# .cargo/config.toml
[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指定目标编译
crossDocker 容器化交叉编译
.cargo/config.toml链接器配置

练习编辑器

rust
Loading...