东郭欣然 发表于 2025-6-5 14:42:51

Rust 交叉编译 macOS 为 Linux 和 Windows



目录

[*]前言
[*]环境
[*]案例
[*]macOS 编译为 Linux 和 Windows 可用二进制程序

[*]编译为 Linux 平台
[*]编译为Windows平台

[*]最后

前言

鉴于 rust 中文资料较少,遇到问题的解决方案更少。这里记录遇到的一些问题。
Rust 支持交叉编译,可以在 macOS 平台编译出 Linux 或者 Windows 可运行的程序,或者在 Linux 平台编译 macOS 或者 Windows 可运行的程序。
本文主要文章讲解Mac平台编译为其他平台的二进制程序。
想要实现跨平台编译且可运行的程序,那么我们就需要静态链接,这样生成程序才不会因为动态链接库的原因运行失败。
默认情况下,Rust 静态连接所有 Rust 代码。如果程序中使用了标准库,Rust 会连接到系统的libc实现。
环境

苹果系统:
操作系统:macOS 12.3.1 21E258 x86_64
生锈:rustc 1.60.0 (7737e0b5c 2022-04-04)
生锈:rustup 1.24.3 (ce5817a94 2021-05-31)
Linux:
操作系统:EndeavourOS Linux x86_64
核心:5.17.1-arch1-1
生锈:rustc 1.60.0 (7737e0b5c 2022-04-04)
生锈:rustup 1.24.3 (ce5817a94 2021-05-31)
首先需要安装Rust,使用命令`` 。
案例

使用 Cargo 新建二进制项目:
cargo new --bin hello文件main.rs:
fn main() {
    println!("Hello World!\n");
}macOS 编译为 Linux 和 Windows 可用二进制程序

编译为 Linux 平台

想要实现Linux平台可以运行的程序,那么就需要使用musl来替代glibc,musl实现了Linux libc。
musl 在macOS上使用musl-cross,musl-cross是专门编译到Linux的工具链,下面进行安装:
musl https://musl.libc.org/
$ brew install FiloSottile/musl-cross/musl-cross还需要创建musl-gcc:
$ ln -s /usr/local/bin/x86_64-linux-musl-gcc /usr/local/bin/musl-gcc添加对应的Target,只需要执行一次就可以了:
rustup target add x86_64-unknown-linux-musl修改配置文件~/.cargo/config(如果没有可以新建),添加以下内容:

linker = "x86_64-linux-musl-gcc"也可以在项目根目录下创建 .cargo/config 文件,只对当前项目生效

# 使用
cargo build --release --target x86_64-unknown-linux-musl结果:
$ tree -L 2 target/x86_64-unknown-linux-musl
target/x86_64-unknown-linux-musl
├── CACHEDIR.TAG
└── debug
    ├── build
    ├── deps
    ├── examples
    ├── hello
    ├── hello.d
    └── incremental

5 directories, 3 files
$ file target/x86_64-unknown-linux-musl/debug/hello
target/x86_64-unknown-linux-musl/debug/hello: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, with debug_info, not stripped编译为Windows平台

mingw-w64是用来编译到Windows的工具链,使用如下命令进行安装:
brew install mingw-w64添加接下来mingw-64的Target,只需要执行一次就可以了:
$ rustup target add x86_64-pc-windows-gnu修改配置文件~/.cargo/config(如果没有可以新建),设置Linker,添加如下内容:

linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-gcc-ar":
# 使用
$ cargo build --release --target x86_64-unknown-linux-musl结果:
$ tree -L 2 target/x86_64-pc-windows-gnu
target/x86_64-pc-windows-gnu
├── CACHEDIR.TAG
└── debug
    ├── build
    ├── deps
    ├── examples
    ├── hello.d
    ├── hello.exe
    └── incremental

5 directories, 3 files
$ file target/x86_64-pc-windows-gnu/debug/hello.exe
target/x86_64-pc-windows-gnu/debug/hello.exe: PE32+ executable (console) x86-64, for MS Windows最后

- https://tomshine.hashnode.dev/rust-macos-linux-windowsrust合集

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

僻嘶 发表于 2025-12-28 21:35:19

感谢分享,下载保存了,貌似很强大

卿搞笔 发表于 2026-1-2 02:07:41

谢谢楼主提供!

福清婉 发表于 2026-1-8 04:39:33

这个好,看起来很实用

骂治并 发表于 2026-1-11 10:22:53

谢谢分享,辛苦了

百杲憔 发表于 2026-1-20 02:04:11

懂技术并乐意极积无私分享的人越来越少。珍惜

敞撬 发表于 2026-1-22 06:00:09

热心回复!

尚腱埂 发表于 2026-1-22 10:21:25

很好很强大我过来先占个楼 待编辑

茅断卉 发表于 2026-1-23 15:23:45

热心回复!

森萌黠 发表于 2026-1-24 10:55:22

这个有用。

剽达崖 发表于 2026-1-28 06:07:41

收藏一下   不知道什么时候能用到

皇甫佳文 发表于 2026-1-28 11:27:23

谢谢楼主提供!

章娅萝 发表于 2026-1-29 08:41:01

感谢分享

穆望 发表于 2026-1-30 06:07:14

感谢,下载保存了

神泱 发表于 2026-1-30 06:49:15

感谢发布原创作品,程序园因你更精彩

南宫玉英 发表于 2026-2-1 05:53:22

前排留名,哈哈哈

骆贵 发表于 2026-2-2 02:21:11

前排留名,哈哈哈

恿深疏 发表于 2026-2-5 10:39:51

收藏一下   不知道什么时候能用到

尚腱埂 发表于 2026-2-9 10:01:46

这个有用。

甘子萱 发表于 2026-2-9 12:42:30

谢谢楼主提供!
页: [1] 2
查看完整版本: Rust 交叉编译 macOS 为 Linux 和 Windows