用途: 该技能用于指导代理完成 Rust 交叉编译,即为不同于当前主机架构或操作系统的目标平台构建 Rust 二进制文件。适合需要跨平台发布、嵌入式开发或静态链接构建的场景。
主要能力:
- 通过 rustup 添加和管理目标平台(如 aarch64-unknown-linux-gnu、x86_64-unknown-linux-musl、wasm32-unknown-unknown、thumbv7m-none-eabi 等),并使用 cargo build --target 进行构建。
- 提供常见目标三元组(target triple)及其用途对照,涵盖 Linux(glibc/musl)、Windows(GNU/MSVC)、macOS、WASM、Cortex-M 裸机、RISC-V 裸机等。
- 介绍 cross 工具:基于预构建 Docker 镜像进行封闭式交叉构建,作为 cargo 的替代使用(cross build / cross test),并支持通过 Cross.toml 配置镜像和 pre-build 步骤。
- 介绍 cargo-zigbuild:基于 zig cc 的零配置交叉编译,无需 Docker 或系统交叉编译器,支持精确指定 glibc 版本(如 aarch64-unknown-linux-gnu.2.17),并可从 Linux/macOS 构建 Windows 目标。
- 说明 .cargo/config.toml 的配置方式,包括为不同目标指定 linker、rustflags 和 runner。
- 使用 musl 目标构建静态链接二进制,并通过 file 命令验证静态链接。
- 面向嵌入式裸机(#[no_std])的配置与构建,包含 .cargo/config.toml、main.rs 示例与 Cargo.toml 依赖及 release profile 设置。
使用方式:
- 先通过 rustup target add 添加目标平台,再执行 cargo build --target <triple> --release。
- 若希望避免手动配置系统交叉工具链,可安装并使用 cross(cargo install cross)或 cargo-zigbuild(cargo install cargo-zigbuild,并安装 zig)。
- 通过 .cargo/config.toml 配置 linker、rustflags 与 runner,或在 Cross.toml 中为特定目标指定镜像和构建前命令。
- 嵌入式场景中可设置默认 target,并配合 probe-run、qemu 等 runner 运行或测试。
适用场景: 为 ARM/aarch64 交叉编译、为不同操作系统构建、使用 cross 或 cargo-zigbuild、为嵌入式 no_std 目标构建、构建静态 musl 二进制、以及排查交叉编译产物无法在目标上运行的问题。
相关技能: 编译器与 profile 配置可参考 rustc-basics;底层交叉编译器设置可参考 cross-gcc;Zig 原生交叉编译可参考 zig-cross;当 Rust 属于 CMake 交叉构建的一部分时可参考 cmake。
限制: 该技能资料未提供具体的支持平台范围、失败排查的完整步骤、性能基准或收费信息,相关细节暂未提供。