armeb-unknown-linux-gnueabi

层级:3

用于交叉编译针对 ARM BE8 架构的 Linux 用户模式应用程序的目标。

概述

BE8 架构保留了传统小端 ARM 系统使用的小端代码流,但数据访问是大端的。BE8 主要用于高性能网络应用程序,其中能够以其本机“网络字节序”读取数据包非常重要(许多网络协议以大端字节序传输数据以用于其线格式)。

历史

BE8 架构是 ARM 自 ARMv6 以来默认的大端架构。其前身用于 ARMv4 和 ARMv5 设备,称为 BE32。在 ARMv6 架构上,可以通过 系统寄存器 配置字节序。但是,BE32 已从 ARMv7 开始被弃用。

目标维护者

要求

该目标是交叉编译的。此目标以正常方式支持 std(实际上,与标准 ARM 配置相比,只需要进行少量更改)。

目标定义

目标定义可以在 此处 查看。特别要注意的是,features 指定此目标是为 ARMv8 内核构建的。尽管这可能根据需要进行修改。

构建目标

由于它是 3 级,因此 Rust 尚未为此目标提供预编译的工件。

因此,您可以通过将其添加到 config.toml 中的目标列表来构建支持该目标的 Rust,下面显示了一个示例配置。预计用户已经拥有一个可用的 GNU 编译器工具链,并相应地更新了路径。

[llvm]
download-ci-llvm = false
optimize = true
ninja = true
targets = "ARM;X86"
clang = false

[build]
target = ["x86_64-unknown-linux-gnu", "armeb-unknown-linux-gnueabi"]
docs = false
docs-minification = false
compiler-docs = false
[install]
prefix = "/home/user/x-tools/rust/"

[rust]
debug-logging=true
backtrace = true
incremental = true

[target.x86_64-unknown-linux-gnu]

[dist]

[target.armeb-unknown-linux-gnueabi]
cc = "/home/user/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-gcc"
cxx = "/home/user/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-g++"
ar = "/home/user/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-ar"
ranlib = "/home/user/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-ranlib"
linker = "/home/user/x-tools/armeb-unknown-linux-gnueabi/bin/armeb-unknown-linux-gnueabi-gcc"
llvm-config = "/home/user/x-tools/clang/bin/llvm-config"
llvm-filecheck = "/home/user/x-tools/clang/bin/FileCheck"

构建 Rust 程序

以下 .cargo/config 需要在任何项目目录中才能为 BE8 目标构建

[build]
target = "armeb-unknown-linux-gnueabi"

[target.armeb-unknown-linux-gnueabi]
linker = "armeb-unknown-linux-gnueabi-gcc"

请注意,预计用户拥有 GNU 工具链中的合适链接器。