*-unknown-netbsd

层级:3

NetBSD 基于 4.4BSD 的多平台类 Unix 操作系统。

目标名称遵循以下格式:$ARCH-unknown-netbsd{-$SUFFIX},其中 $ARCH 指定目标处理器架构,-$SUFFIX(可选)可能指示 ABI。以下目标当前在运行 NetBSD

目标名称NetBSD 平台
x86_64-unknown-netbsdamd64 / x86_64 系统
armv7-unknown-netbsd-eabihf具有硬浮点的 32 位 ARMv7 系统
armv6-unknown-netbsd-eabihf具有硬浮点的 32 位 ARMv6 系统
aarch64-unknown-netbsd64 位 ARM 系统,小端序
aarch64_be-unknown-netbsd64 位 ARM 系统,大端序
i586-unknown-netbsd32 位 i386,限制为奔腾
i686-unknown-netbsd具有 SSE 的 32 位 i386
mipsel-unknown-netbsd32 位 mips,需要 mips32 cpu 支持
powerpc-unknown-netbsd各种 32 位 PowerPC 系统,例如 MacPPC
riscv64gc-unknown-netbsd64 位 RISC-V
sparc64-unknown-netbsdSun UltraSPARC 系统

所有都使用与给定操作系统版本提供的原生 GNU C++ 编译器一起提供的“原生”stdc++ 库。许多引导程序是为 NetBSD 9.x 构建的,尽管存在一些例外情况(有些是为 NetBSD 8.x 构建的,但也适用于更新的操作系统版本)。

指定开发人员

回退到 [email protected],或通过 NetBSD 的错误报告系统报告故障。

要求

x86_64-unknown-netbsd 构件由 rust 项目分发。

其他目标由指定开发人员构建(见上文),这些目标最初是交叉编译的,但其中许多(如果不是大多数)也作为测试的一部分在本地构建。

构建

包的默认构建模式是原生构建。

交叉编译

这些目标可以交叉编译,我们通过 pkgsrc 包进行交叉编译。

交叉编译通常需要 NetBSD 本身正常交叉构建产生的“工具”和“目标”树,参考我们的主要构建脚本 build.sh

例如,参见 do-cross.mk Makefile 用于交叉构建所有上述 NetBSD 目标的 Makefile(除了 amd64 目标)。

rust 构建的主要选项是使用 rust 在其分发版中携带的 LLVM 构建 rust,还是使用从 pkgsrc 安装的 LLVM 包。PKG_OPTIONS.rust 选项是 rust-internal-llvm,参考 rust 包的 options.mk make 片段。它默认情况下为上述几个平台设置,出于各种原因(参见注释),但在其他情况下未设置,因此表示使用 pkgsrc LLVM。

测试

Rust 测试套件可能可以在本地运行。

对于维护者可以本地构建的系统,rust 编译器本身是在本地重新构建的。这涉及使用新构建的 rust 编译器重新构建 rust 编译器,因此对结果进行了相当广泛的练习。

此外,对于某些系统,我们构建 librsvg,对于功能更强大的系统,我们构建和测试 firefox(amd64、i386、aarch64)。

构建 Rust 程序

Rust 为 x86_64-unknown-netbsd 目标提供预编译的构件。

对于上面提到的其他系统,使用 pkgsrc 路线可能是最简单的,可能通过 rust-bin 包来节省时间,参见 rust.mk Makefile 片段中的 RUST_TYPE 变量。

pkgsrc rust 包有一些文件可以帮助构建用 rust 编写的 pkgsrc 包,参考 lang/rust 包中的 rust.mkcargo.mk Makefile 片段。