交叉编译指南
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 对象报告目标的可构建性,并携带结构化的后端阻碍信息,例如 target、objectFormat、backend、stage 和 unsupportedFeature。
直接产物
支持的可执行文件构建使用 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 --json、zero check --json --emit <kind> 和 zero size --json 来检查所请求的目标是否受支持。不支持的目标/后端组合应以结构化诊断信息报错,而不是静默回退到其他后端。