*-unknown-netbsd
Tier: 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,限制为 Pentium |
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 系统 |
所有目标都使用“原生” stdc++
库,该库与给定操作系统版本原生提供的 GNU C++ 编译器一起使用。许多引导程序是为 NetBSD 9.x 构建的,尽管存在一些例外情况(有些是为 NetBSD 8.x 构建的,但也适用于较新的操作系统版本)。
指定开发者
- @he32,
[email protected]
- NetBSD/pkgsrc-wip 的 rust 维护者(请参阅 MAINTAINER 变量)。此软件包是 “pkgsrc work-in-progress” 的一部分,用于部署和测试 rust 的新版本
- NetBSD 的 pkgsrc lang/rust,用于 pkgsrc 中的 “正式” 软件包。
- NetBSD 的 pkgsrc lang/rust-bin,它将引导工具包重新用作二进制发行版,因此避免了 rust 本身相当漫长的原生构建时间
回退到 [email protected],或通过 NetBSD 的错误报告系统进行故障报告。
要求
x86_64-unknown-netbsd
工件由 rust 项目分发。
其他目标由指定的开发者构建(见上文),这些目标最初是交叉编译的,但即使不是大多数,也有许多目标也作为测试的一部分进行原生构建。
构建
软件包的默认构建模式是原生构建。
交叉编译
这些目标可以进行交叉编译,我们通过 pkgsrc 软件包执行此操作。
交叉编译通常需要从 NetBSD 本身的正常交叉构建产生的 “tools” 和 “dest” 树,参考我们的主构建脚本 build.sh
。
例如,请参阅 do-cross.mk Makefile,了解用于交叉构建上述所有 NetBSD 目标(amd64
目标除外)的 Makefile。
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 片段。