s390x-unknown-linux-gnu
Tier: 2 (带有主机工具)
IBM z/Architecture (s390x) 目标(包括 IBM Z 和 LinuxONE),运行 Linux。
目标维护者
- Ulrich Weigand, [email protected], @uweigand
- Josh Stone, [email protected], @cuviper
要求
此目标需要
- Linux 内核版本 3.2 或更高版本
- glibc 2.17 或更高版本
目标生成的代码使用 z/Architecture ISA,假设最低架构级别为 z10(z/Architecture 操作原理第八版),并符合 s390x ELF ABI。
参考资料
构建目标
此目标通过 rustup
分发,并且在其他方面不需要特殊配置。
如果您出于某种原因需要构建自己的 Rust,则可以在 config.toml
中启用该目标。例如
[build]
target = ["s390x-unknown-linux-gnu"]
构建 Rust 程序
在 s390x Linux 主机上,s390x-unknown-linux-gnu
目标应自动安装并默认使用。
在非 s390x 主机上,添加目标
rustup target add s390x-unknown-linux-gnu
然后使用以下命令交叉编译 crate:
cargo build --target s390x-unknown-linux-gnu
测试
对于测试和运行目标没有特殊要求。 为了在主机上测试交叉构建,请参阅下面的“交叉编译工具链和 C 代码”部分。
如果您想进行本机测试,但没有自己的 s390x 机器,则有几种方法可以访问一台
-
IBM LinuxONE Community Cloud 提供了一个自助服务门户,您可以在其中创建 s390x 虚拟机实例。 这些实例旨在临时使用(限制为 120 天)。
-
IBM LinuxONE Open Source Cloud 提供对 s390x 机器的永久访问权限。 这需要 IBM 的批准,如果您计划使用该机器来处理与 IBM Z 生态系统相关的开源项目(Rust 编译器当然符合条件),通常会获得批准。
交叉编译工具链和 C 代码
使用该目标构建的 Rust 代码与使用 s390x-unknown-linux-gnu
目标三元组(通过本机或交叉编译)使用 GCC 或 Clang 编译的 C 代码兼容。
在 Ubuntu 上,可以使用以下命令安装 s390x 交叉工具链:
apt install gcc-s390x-linux-gnu g++-s390x-linux-gnu libc6-dev-s390x-cross
根据您的系统,您可能需要配置目标以使用 GNU GCC 链接器。 要使用它,请将以下内容添加到您的 .cargo/config.toml
中
[target.s390x-unknown-linux-gnu]
linker = "s390x-linux-gnu-gcc"
如果您的 s390x-linux-gnu-*
工具链不在您的 PATH
中,您可能需要配置其他设置
[target.s390x-unknown-linux-gnu]
# Adjust the paths to point at your toolchain
cc = "/TOOLCHAIN_PATH/bin/s390x-linux-gnu-gcc"
cxx = "/TOOLCHAIN_PATH/bin/s390x-linux-gnu-g++"
ar = "/TOOLCHAIN_PATH/bin/s390x-linux-gnu-ar"
ranlib = "/TOOLCHAIN_PATH/bin/s390x-linux-gnu-ranlib"
linker = "/TOOLCHAIN_PATH/bin/s390x-linux-gnu-gcc"
要在非 s390x 主机上测试交叉编译的二进制文件,您可以使用 qemu
。 在 Ubuntu 上,可以使用以下命令获取 s390x 模拟器:
apt install qemu-system-s390x
然后,在 .cargo/config.toml
中设置 runner
[target.s390x-unknown-linux-gnu]
runner = "qemu-s390x-static -L /usr/s390x-linux-gnu"