cargo/rust 交叉构建工具,无需 wsl/docker/colima,可在 windows 上原生运行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zijiren
V2EX    程序员

cargo/rust 交叉构建工具,无需 wsl/docker/colima,可在 windows 上原生运行
  •  
  •   zijiren 15 天前 1616 次点击

    大家好,我构建了一套交叉编译工具链,支持在 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

    23 条回复    2026-01-15 09:31:12 +08:00
    dianso
        1
    dianso  
       15 天前
    官方竟然没有吗
    还是喜欢 go 的交叉编译
    zijiren
        2
    zijiren  
    OP
       15 天前
    @dianso go 交叉构建挺简单的,但是 cgo 就比较麻烦了,也是类似的思路: https://github.com/zijiren233/go-cross

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

    https://github.com/boxlite-ai/boxlite
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1048 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 19ms UTC 22:40 PVG 06:40 LAX 14:40 JFK 17:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86