用 cargo-zigbuild 交叉编译 Rust 项目到 FreeBSD

记录一下在 Linux (x86_64) 上用 cargo-zigbuild 交叉编译 Rust 项目到 FreeBSD x86_64 的踩坑过程。项目是一个 Discord bot,依赖了 sysinfo、tikv-jemallocator、sea-orm(SQLite) 等 crate。 背景 Zig 自带了多平台的 libc 和交叉编译工具链,cargo-zigbuild 利用 Zig 作为 linker 来实现 Rust 的交叉编译,通常比自己配置交叉工具链方便很多。但 FreeBSD 作为目标平台时会遇到一些特殊问题。 准备 # 安装 FreeBSD 目标 rustup target add x86_64-unknown-freebsd # 安装 cargo-zigbuild(如果还没有) cargo install cargo-zigbuild 问题一:缺少 FreeBSD 系统库 编译本身顺利通过,但链接阶段报错: error: unable to find dynamic system library 'geom' using strategy 'no_fallback' sysinfo crate 在 FreeBSD 上需要链接 libkvm、libprocstat、libgeom、libdevstat 等 FreeBSD base system 的库。Zig 的工具链只提供 libc,不包含这些系统库。 ...

2026年4月6日 · 4 分钟