静态编译 Static Compilation

rustc 默认使用的是操作系统里的C库, 比如 linux 里的是 glibc; 这个库与当前的系统平台有强绑定, 如果编译的程序链接到了它, 就很难让二进制程序在别的版本的系统上运行. 常见的一个问题就是链接了高版本的 glibc, 然后在低版本上运行失败, 提供版本不匹配.

此时, 可以考虑用静态编译的形式来处理, 可以使用 musl-libc 作为静态编译时的 libc 库. musl 库是一个很简洁的 libc 实现, 它不着重于性能, 更关注代码的简洁性和跨平台能力.

在 linux 系统里, 需要安装这两个包:

sudo apt install musl-dev musl-tools

使用 rustup 安装 musl 的目标:

rustup target add x86_64-unknown-linux-musl

之后, 在编译一个 rust 项目时, 修改生成的目标:

cargo build --target=x86_64-unknown-linux-musl