cargo/rust 交叉构建工具,无需 wsl/docker/colima,可在 windows 上原生运行

1 月 13 日
 zijiren

大家好,我构建了一套交叉编译工具链,支持在 Windows 、macOS 或 Linux 上为其他平台构建二进制文件,且无需 WSL 、Docker 或 Colima 。

例如,你可以在 Windows 机器上构建可在 Linux 上运行的可执行程序。

用法很简单:

cargo install cargo-cross
cargo cross build --target x86_64-unknown-linux-musl
cargo cross build --target x86_64-unknown-linux-glibc --glibc-version 2.42
cargo cross build --target x86_64-pc-windows-gnu

支持:

windows 构建到 windows/linux/freebsd/android

linux 构建到 windows/linux/macos/ios/freebsd/android

macos 构建到 windows/linux/macos/ios/freebsd/android

你还可以选择使用的是 glibc 还是 musl libc ,甚至可以选择 glibc 版本(支持 2.28-2.42 )

项目地址: https://github.com/zijiren233/cargo-cross

求 star

2800 次点击
所在节点    程序员
23 条回复
dianso
1 月 13 日
官方竟然没有吗
还是喜欢 go 的交叉编译
zijiren
1 月 13 日
@dianso go 交叉构建挺简单的,但是 cgo 就比较麻烦了,也是类似的思路: https://github.com/zijiren233/go-cross

只不过 cgo 的交叉构建我有段时间没维护了,没有 cargo-cross 功能多
iorilu
1 月 13 日
唯独 windows 不能编译 macos 吗
zijiren
1 月 13 日
@iorilu 目前是的😂
encro
1 月 14 日
不是本来就支持吗?
Riddler2023
1 月 14 日
zijiren
1 月 14 日
@Riddler2023 我写的这个不需要 docker ,并且使用最新工具链 gcc15.2 以及支持多种 glibc 版本
zijiren
1 月 14 日
@encro llvm 确实是原生支持交叉构建,但是对于 libc/ld(linker)需求是需要 c 编译器支持的
ljkgpxs
1 月 14 日
刚好最近在做自动化编译多平台,我来试试,顺便问下,有没有办法支持编译 x86_64-win7-windows ,目前我都是手动使用 cargo +nightly build --target x86_64-win7-windows-msvc -Zbuild-std --release 编译,发布版本有点麻烦,还得自己打包
lete
1 月 14 日
牛的,看上去不错 star
ljkgpxs
1 月 14 日
有没有考虑增加 glibc 2.17 版本,用来编译动态库,我这接触的不少企业还都在用 centos7
mlhiter955
1 月 14 日
有点意思哈
zijiren
1 月 14 日
@ljkgpxs 目前不支持 msvc 的 windows ,需要手动安装 vs 。目前只支持 windows-gnu
zijiren
1 月 14 日
@ljkgpxs 可以考虑支持更旧版本的 glibc 。除了 2.17 还有哪些特殊的 glibc 版本曾经比较流行吗
Al0rid4l
1 月 14 日
zijiren
1 月 14 日
@Al0rid4l libc 支持的种类不一样
ljkgpxs
1 月 14 日
@zijiren 我这里碰到的有 2.17 、2.28 、2.38 ,比 2.17 更老的就没碰到了,客户装新服务器基本上都是 2.28 以上
pursuer
1 月 14 日
我现在想找个 windows 下交叉编译 Linux 的 SYSROOT ,不知道有没有现成的,懒得自己去折腾。。
zijiren
1 月 14 日
@pursuer 那比较麻烦,可以先从下载一个交叉构建器起手😂: https://github.com/zijiren233/cross-make/releases/tag/v0.7.4-windows-x86_64
chengYT
1 月 14 日
和 zig-build 比呢,我现在在用这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1185353

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX