armeb-unknown-linux-gnueabi
Tier: 3
用于交叉编译以 Arm BE8 架构为目标的 Linux 用户模式应用程序的目标。
概述
BE8 架构保留了传统小端 Arm 系统使用的小端序代码流,但数据访问采用大端序。BE8 主要用于高性能网络应用,在这些应用中,以其原生“网络字节序”读取数据包的能力非常重要(许多网络协议在其线路格式中使用大端字节序传输数据)。
历史
自 Armv6 以来,BE8 架构是 Arm 的默认大端序架构。它的前身 BE32 用于 Armv4 和 Armv5 设备。在 Armv6 架构上,可以通过系统寄存器配置字节序。然而,Armv7 及更高版本已弃用 BE32。
目标维护者
要求
该目标是交叉编译的。此目标以正常方式支持 std
(实际上,从标准 Arm 配置中仅需进行名义上的更改)。
目标定义
目标定义可以在此处查看。特别需要注意的是,features
指定此目标是为 Armv8 内核构建的。虽然这可能会根据需要进行修改。
构建目标
由于它是 Tier 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 工具链的合适链接器。