*-未知-hermit

Tier: 3

Hermit unikernel 目标允许将您的应用程序编译成自包含的、专门的 unikernel 镜像,这些镜像可以在小型虚拟机中运行。

目前可用的目标三元组

  • x86_64-unknown-hermit
  • aarch64-unknown-hermit
  • riscv64gc-unknown-hermit

目标维护者

要求

这些目标仅支持交叉编译。这些目标支持 std。

当为这个目标构建二进制文件时,Hermit unikernel 是从头开始构建的。应用程序开发者自己定制目标并设置相应的期望。

Hermit 目标遵循 Linux 的 extern "C" 调用约定。

Hermit 二进制文件具有 ELF 格式。

构建目标

您可以通过将目标添加到 config.toml 中的 target 列表来构建支持这些目标的 Rust。要运行 Hermit 构建脚本,您还必须启用您的主机目标。构建脚本依赖于 llvm-tools,并且二进制文件使用 rust-lld 链接,因此也必须启用这些。

[build]
build-stage = 1
target = [
    "<HOST_TARGET>",
    "x86_64-unknown-hermit",
    "aarch64-unknown-hermit",
    "riscv64gc-unknown-hermit",
]

[rust]
lld = true
llvm-tools = true

构建 Rust 程序

Rust 尚未为这些目标发布预编译的工件。要为这些目标编译,您需要构建启用这些目标的 Rust(请参阅上面的“构建目标”),或者通过使用 build-std 或类似工具构建您自己的 core 副本。

由于所有 Hermit 程序都是 unikernel,因此构建 Rust 程序还需要包含操作系统代码。我们的入门 hermit-rs-template 中提供了这样做指南。

测试

这些目标支持以自包含 unikernel 镜像的形式运行二进制文件。这些镜像可以被 Hermit 的 loader 或 hypervisor (Uhyve) 链式加载。QEMU 可以用于在任何架构上使用 loader 引导 Hermit 二进制文件。这些目标不支持运行 Rust 测试套件。

交叉编译工具链和 C 代码

这些目标尚不支持同时使用 C 代码和 Rust 代码。