*-未知-hermit
Tier: 3
Hermit unikernel 目标允许将您的应用程序编译成自包含的、专门的 unikernel 镜像,这些镜像可以在小型虚拟机中运行。
目前可用的目标三元组
x86_64-unknown-hermit
aarch64-unknown-hermit
riscv64gc-unknown-hermit
目标维护者
- Stefan Lankes (@stlankes)
- Martin Kröning (@mkroening)
要求
这些目标仅支持交叉编译。这些目标支持 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 代码。