参考

交叉编译指南

目标平台、能力拒绝、直接产物和目标事实。

交叉编译指南

Zero 的目标名称是显式的,目标信息可以通过 zero targets 查看。

bin/zero targets
bin/zero check --target linux-musl-x64 examples/memory-package
bin/zero build --target linux-musl-x64 examples/memory-package --out .zero/out/memory-package

编译器将检查与可执行文件链接分离开来。与目标无关的代码可以针对非主机目标进行检查,而 std.fs 等托管 API 在所选目标或直接后端无法提供该功能时会被拒绝。

bin/zero check --json --target linux-musl-x64 conformance/packages/target-incompatible-app

对于代理规划,check --json 还可以报告所选的直接产物是否预期可以构建,而无需实际生成它:

bin/zero check --json --emit obj --target linux-musl-x64 conformance/agent-surface/fixtures/owned-drop-direct-backend-unsupported.0

顶层结果主要反映语言有效性。嵌套的 targetReadiness 对象报告目标的可构建性,并携带结构化的后端阻碍信息,例如 targetobjectFormatbackendstageunsupportedFeature

直接产物

支持的可执行文件构建使用 Zero 的直接目标发射器。不支持的目标或语言特性会报告诊断信息,而不是静默选择外部后端。

bin/zero build --emit exe --target linux-musl-x64 examples/direct-exe-return.0 --out .zero/out/direct-exe-return
bin/zero build --emit obj --target darwin-arm64 examples/direct-call-add.0 --out .zero/out/direct-call-add.o

使用 JSON 模式来检查目标支持情况、所需能力、所选发射器以及产物信息:

bin/zero build --json --emit exe --target linux-musl-x64 examples/direct-exe-return.0
bin/zero graph --json --target darwin-arm64 examples/memory-package
bin/zero size --json --target linux-musl-x64 examples/direct-exe-return.0

系统根目录与 C 边界

Zero 以 JSON 格式报告系统根目录和 C ABI 信息,这样跨目标构建就不会静默复用主机的 SDK 路径。当目标需要显式的 SDK/sysroot 时,请使用 zero targets --json 所指定的环境变量。

C 互操作仍处于早期阶段。请保持面向 C 的代码精简,在适用时检查 zero abi --json,并优先使用明确声明目标假设的示例。

当前边界

公开的目标集专注于原生可执行文件和目标文件。在生成产物之前,使用 zero targets --jsonzero check --json --emit <kind>zero size --json 来检查所请求的目标是否受支持。不支持的目标/后端组合应以结构化诊断信息报错,而不是静默回退到其他后端。