armv7-unknown-linux-uclibceabihf

级别:3

此级别支持运行 Linux 内核和 uClibc-ng 标准库的 Armv7-A 处理器。它为 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