V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zijiren
V2EX  ›  程序员

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

  •  
  •   zijiren · 16 天前 · 1635 次点击

    大家好,我构建了一套交叉编译工具链,支持在 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  
       16 天前
    官方竟然没有吗
    还是喜欢 go 的交叉编译
    zijiren
        2
    zijiren  
    OP
       16 天前
    @dianso go 交叉构建挺简单的,但是 cgo 就比较麻烦了,也是类似的思路: https://github.com/zijiren233/go-cross

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

    https://github.com/boxlite-ai/boxlite
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4629 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:39 · PVG 14:39 · LAX 22:39 · JFK 01:39
    ♥ Do have faith in what you're doing.