*-unknown-netbsd
层级:3
NetBSD 基于 4.4BSD 的多平台类 Unix 操作系统。
目标名称遵循以下格式:$ARCH-unknown-netbsd{-$SUFFIX}
,其中 $ARCH
指定目标处理器架构,-$SUFFIX
(可选)可能指示 ABI。以下目标当前在运行 NetBSD
目标名称 | NetBSD 平台 |
---|---|
x86_64-unknown-netbsd | amd64 / x86_64 系统 |
armv7-unknown-netbsd-eabihf | 具有硬浮点的 32 位 ARMv7 系统 |
armv6-unknown-netbsd-eabihf | 具有硬浮点的 32 位 ARMv6 系统 |
aarch64-unknown-netbsd | 64 位 ARM 系统,小端序 |
aarch64_be-unknown-netbsd | 64 位 ARM 系统,大端序 |
i586-unknown-netbsd | 32 位 i386,限制为奔腾 |
i686-unknown-netbsd | 具有 SSE 的 32 位 i386 |
mipsel-unknown-netbsd | 32 位 mips,需要 mips32 cpu 支持 |
powerpc-unknown-netbsd | 各种 32 位 PowerPC 系统,例如 MacPPC |
riscv64gc-unknown-netbsd | 64 位 RISC-V |
sparc64-unknown-netbsd | Sun UltraSPARC 系统 |
所有都使用与给定操作系统版本提供的原生 GNU C++ 编译器一起提供的“原生”stdc++
库。许多引导程序是为 NetBSD 9.x 构建的,尽管存在一些例外情况(有些是为 NetBSD 8.x 构建的,但也适用于更新的操作系统版本)。
指定开发人员
- @he32,
[email protected]
- NetBSD/pkgsrc-wip 的 rust 维护者(参见 MAINTAINER 变量)。此包是“pkgsrc 工作进度”的一部分,用于部署和测试 rust 的新版本
- NetBSD 的 pkgsrc lang/rust 用于 pkgsrc 中的“正式”包。
- NetBSD 的 pkgsrc lang/rust-bin 它将引导程序套件重新用作二进制发行版,因此避免了 rust 本身相当漫长的原生构建时间
回退到 [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.mk
和 cargo.mk
Makefile 片段。