Rust交叉编译 – 使用cargo-zigbuild轻松完成 , zig作为链接器

想试试用rust写一个云函数,但是运行环境是debian,开发的电脑是win,用WSL编译还会有glibc版本的问题
都要折腾,那干脆还是交叉编译吧,网上搜的文章上来就莫名其妙的就装各种工具链
记录
我的目的是 x86_64_win -> x64_linux,解决问题还是要先有问题

看一下支持的目标 rustup target list

把需要的添加上 rust target add __

然后直接build,缺什么补什么

这里问题可以丢给AI,AI给了 cross 和 使用 “邻居” zig作为链接器,cross是使用容器的
在搜的过程中发现了这个项目
结果 : 使用cargo-zigbuild
Tips: 2025/10 目前目标仅支持macOS与linux
项目地址https://github.com/rust-cross/cargo-zigbuild
安装zig
zig 也是一款新的编程语言,干的事也差不多,所以可以叫邻居
项目的描述和用法都非常简单 先去,官网https://ziglang.org/download 下载zig
win : 解压到一个合理的地方,编辑环境变量,Path 添加 安装路径\bin
重启一下终端或编辑器
使用
假设目标为 : x86_64-unknown-linux-gnu
安装cargo-zigbuild
cargo install --locked cargo-zigbuild
添加Rust目标
rustup target add aarch64-unknown-linux-gnu
编译的时候使用命令
cargo zigbuild --target aarch64-unknown-linux-gnu
过程很顺利

Glibc : 指定 glibc 版本
项目同时还能解决glibc问题
默认情况下--target
,*-gnu
Zig 将隐式构建 glibc 的默认版本,该版本根据 Zig 的版本而变化(v12 到 v14 版本默认为 glibc 2.28)。
要针对特定的最低 glibc 版本进行构建,请将该版本作为后缀添加到--target
值中。例如,要--target aarch64-unknown-linux-gnu
针对 glibc 2.17 进行编译:
cargo zigbuild --target aarch64-unknown-linux-gnu.2.17
评论