一、rust编译文件
cargo build
或
cargo build --release 发布构建
二、安装 x86_64-unknown-liunx-musl target
rustup target add x86_64-unknown-linux-musl
三、修改cargo配置
- 在用户目录下 ./用户/用户目录/.cargo/config文件;打开文件添加下面配置
[target.x86_64-unknown-linux-musl] linker = "rust-lld"
四、交叉编译
cargo build --target x86_64-unknown-linux-musl
或
cargo build --target x86_64-unknown-linux-musl --release 发布构建
参考文章:rust在windows上编译成liunx可执行程序 - hziwei - 博客园 (cnblogs.com)
2025-08-23 start:
上面打包的时候会出现一个报错:
--- stderr
error occurred in cc-rs: failed to find tool "x86_64-linux-musl-gcc": program not found (see https://docs.rs/cc/latest/cc/#compile-time-requirements for help)
首先在musl.cc网站下载对应的x86_64-linux-musl-cross.tgz,解压到指定目录,然后配置系统环境变量
musl libc toolchains | static cross/native toolchains
通过网盘分享的文件:x86_64-linux-musl.zip
链接: https://pan.baidu.com/s/1aCiYR7H3K1PIbJcsG_np9A 提取码: 2hve
解压后配置环境变量(I:\orther\software\x86_64-linux-musl-cross\bin)
验证
x86_64-linux-musl-gcc -v
... #省略一堆,最后输出版本号
gcc version 9.2.1 20191214 (GCC)
在项目中的.cargo/config.toml文件配置中:
[net]
git-fetch-with-cli = true
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
[target.x86_64-unknown-linux-musl]
linker = "x86_64-linux-musl-gcc"
[build]
rustc-wrapper = ""
# Windows SSL配置
[env]
CARGO_HTTP_CHECK_REVOKE = "false"
# 国内镜像源配置
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
参考:
【RUST 实战】交叉编译之Windows To Linux-阿里云开发者社区
Windows 10 配置Rust交叉编译Linux应用程序-musl_win10 musl-cross-CSDN博客
Rust交叉编译出现错误(Windows->Linux)? - 知乎
end
2024-09-02 start:
golang在windows环境下build生成linux程序 - 知乎 (zhihu.com)
end
2025-06-10 start:
go version
# 查看之前的golang编译环境
# 设置成linux对应的
set GOARCH=amd64
go env -w GOARCH=amd64
set GOOS=linux
go env -w GOOS=linux
go build -o [目标可执行程序] [源程序]
# 例子
go build -tags dev -o D:\MasterStudy\wormhole\build\hole main.go
# 还原之前的编译环境
set GOARCH=amd64
go env -w GOARCH=amd64
set GOOS=windows
go env -w GOOS=windows
end