armv7-unknown-linux-uclibceabihf

层级:3

此层级支持运行 Linux 内核和 uClibc-ng 标准库的 ARMv7 处理器。它为 Rust 和 Rust 标准库提供完全支持。

指定开发者

要求

此目标是交叉编译的,需要交叉工具链。您可以在 bootlin 找到合适的预构建工具链,或者通过 buildroot 自己构建一个。

构建

获取 C 工具链

为该目标编译 Rust 已在 x86_64 Linux 主机上测试过。其他主机类型尚未测试,但如果您可以为它们找到合适的交叉编译工具链,则可能可以使用。

如果您还没有合适的工具链,请从 这里 下载一个,并将其解压缩到一个目录中。

配置 Rust

可以通过为 rustc 构建启用该目标来构建该目标,方法是在 config.toml 中放置以下内容

[build]
target = ["armv7-unknown-linux-uclibceabihf"]
stage = 2

[target.armv7-unknown-linux-uclibceabihf]
# ADJUST THIS PATH TO POINT AT YOUR TOOLCHAIN
cc = "/TOOLCHAIN_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-gcc"

构建

# in rust dir
./x.py build --stage 2

构建和运行 Rust 程序

要在 x86_64 系统上测试交叉编译的二进制文件,可以使用 qemu-arm 用户空间模拟 程序。这通过进行动态二进制翻译和动态系统调用翻译来避免拥有完整的模拟 ARM 系统。它允许您直接在 x86_64 内核上运行 ARM 程序。非常方便!

要使用

  • 根据您的发行版安装 qemu-arm
  • 通过以下方式链接您构建的工具链
    • rustup toolchain link stage2 ${RUST}/build/x86_64-unknown-linux-gnu/stage2
  • 创建一个测试程序
cargo new hello_world
cd hello_world
  • 构建并运行
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_UCLIBCEABIHF_RUNNER="qemu-arm -L ${TOOLCHAIN}/arm-buildroot-linux-uclibcgnueabihf/sysroot/" \
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_UCLIBCEABIHF_LINKER=${TOOLCHAIN}/bin/arm-buildroot-linux-uclibcgnueabihf-gcc \
cargo +stage2 run --target armv7-unknown-linux-uclibceabihf