Mac 为 Linux 交叉编译 Rust 程序

Posted by RoninRo on Fri, Dec 27, 2019

默认情况下,Rust 将静态链接所有 Rust 代码。但是,如果使用标准库,它将动态链接到系统的 libc

如何想要 100% 静态二进制文件。可以使用 MUSL libc 提供的 Linux-based 支持。

在 Mac 上进行交叉编译

目标是编译 x86_64-unknown-linux-musl 平台的 Rust 程序。

  1. 使用 Homebrew 安装 MUSL, 并为 musl-gcc. 创建链接.
1brew install FiloSottile/musl-cross/musl-cross
2ln -s /usr/local/bin/x86_64-linux-musl-gcc /usr/local/bin/musl-gcc
  1. 用 rustup 添加目标 target :
1rustup target add x86_64-unknown-linux-musl
  1. $HOME/.cargo/config 中设置 linker
1[target.x86_64-unknown-linux-musl]
2linker = "x86_64-linux-musl-gcc"
  1. Building with MUSL
1cargo build --release --target x86_64-unknown-linux-musl

参考: