Rust 程序静态编译完整指南
Rust 静态编译会把所有依赖(包括系统库、标准库)打包进单个可执行文件,最终生成不依赖任何环境、拷贝即运行的独立二进制文件,完美适配 Linux/Windows/macOS 跨平台分发。
下面分最简方案、Linux 完全静态编译、Windows/macOS 静态编译、交叉编译四种场景讲解,直接复制命令就能用。
一、最简静态编译(推荐,大多数场景够用)
Rust 自带 musl 目标,一行命令实现静态编译,无需额外配置:
1. 先安装静态编译工具链
# 安装 musl 静态链接工具链(只需装一次)
rustup target add x86_64-unknown-linux-musl
2. 执行静态编译
# 发布模式 + 静态编译(生成完全独立的二进制文件)
cargo build --release --target x86_64-unknown-linux-musl
编译完成后,文件路径:
target/x86_64-unknown-linux-musl/release/你的程序名
这个文件拷贝到任何 Linux 系统都能直接运行,无依赖。
二、Linux 完全静态编译(无任何动态依赖)
如果你的项目用到了 OpenSSL、SQLite 等第三方 C 库,用上面的命令可能还会残留动态依赖,终极完全静态编译方案:
方法1:配置 Cargo.toml 全局静态编译
在项目根目录的 Cargo.toml 添加配置:
[profile.release]
# 开启全静态链接
rustflags = ["-C", "target-feature=+crt-static"]
然后直接编译:
cargo build --release --target x86_64-unknown-linux-musl
方法2:命令行临时指定静态标志
无需改配置文件,直接运行:
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-unknown-linux-musl
验证是否静态编译成功
# 查看文件依赖
ldd target/x86_64-unknown-linux-musl/release/你的程序名
输出 not a dynamic executable 就代表纯静态编译成功。
三、Windows 静态编译
Windows 下默认就是部分静态,开启全静态只需一行命令:
# Windows 纯静态编译
cargo build --release --target x86_64-pc-windows-msvc -C target-feature=+crt-static
生成的 .exe 文件无任何运行库依赖,双击直接运行。
四、macOS 静态编译
macOS 系统不允许完全静态链接系统库,但可以编译出几乎无依赖的二进制文件:
# macOS 静态编译(最大程度减少依赖)
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release
生成的文件可在同版本 macOS 上直接拷贝运行。
五、常用静态编译目标速查表
| 系统 | 编译目标 | 命令 |
|---|---|---|
| Linux x86_64 | x86_64-unknown-linux-musl | cargo build --release --target x86_64-unknown-linux-musl |
| Linux ARM64 | aarch64-unknown-linux-musl | cargo build --release --target aarch64-unknown-linux-musl |
| Windows | x86_64-pc-windows-msvc | RUSTFLAGS="-C target-feature=+crt-static" cargo build --release |
| macOS | x86_64-apple-darwin | RUSTFLAGS="-C target-feature=+crt-static" cargo build --release |
六、交叉静态编译(比如在 Linux 编译 Windows 程序)
以 Linux 编译 Windows 静态 exe 为例:
# 安装 Windows 目标
rustup target add x86_64-pc-windows-gnu
# 静态编译 exe
RUSTFLAGS="-C target-feature=+crt-static" cargo build --release --target x86_64-pc-windows-gnu
总结
- Linux 首选:
x86_64-unknown-linux-musl工具链,纯静态无依赖; - 一键命令:
cargo build --release --target x86_64-unknown-linux-musl; - 全静态加固:加参数
-C target-feature=+crt-static; - 编译后的文件独立可执行,跨机器拷贝直接运行。

浙公网安备 33010602011771号