rust交叉编译配置:windows上编译linux可执行程序
rust交叉编译配置:windows上编译linux可执行程序
简述
交叉编译大概指在在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码.
本次,我们配置的是在windows上编译出在linux上运行的rust可执行程序.
我们在安装rust之后,默认会安装跟机器环境搭配的编译相关工具.而其他平台的编译工具就需要我们自己去安装了.
通过如下命令查看rust当前的编译工具:
rustup show
查看rust其他支持的编译工具链工具:
rustup target list
# 其中标注了(installed)的表示已安装
其中以gnu为后缀的表示动态编译,即很多包依赖与系统原有的,不打入可执行程序中,这可能造成把程序放在某些机器上执行错误的情况,好处是编译后体积较小.
而以msvc或者musl为后缀的,表示静态编译,即把这个程序相关的代码都打进去,只要执行环境(即编译工具前面的描述x86_64_windows什么的一致)就能执行,缺点是编译后体积较大.
尝试常规方法配置windows上编译linux的环境遇到各种环境失败之后,决定采用cross方案.
cross介绍
cross仓库地址 : https://github.com/cross-rs/cross
cross大概步骤就是通过docker起一个你编译目标的环境,然后把代码扔过去编译,完成后把结果放到项目的target目录下.
这种方式,一劳永逸,并且可拓展性很强,不会遇到各种问题.因此决定采用cross.
cross项目地址上也有教程,请留心查看.
其中,cross的使用跟cargo命令相似:
$ cross build --target aarch64-unknown-linux-gnu
$ cross test --target mips64-unknown-linux-gnuabi64
$ cross rustc --target powerpc-unknown-linux-gnu --release -- -C lto
使用步骤
1. 在cargo上安装cross工具
cargo install cross --git https://github.com/cross-rs/cross
2. 安装docker
此处不详细介绍,注意windows和linux安装docker步骤不一样,windows上需要开启某项系统功能.
具体见: https://www.runoob.com/docker/windows-docker-install.html
注意,需要将docker配置为国内镜像源,但是国内镜像有的已经不能使用了,
我目前的配置如下:
"registry-mirrors": [
"https://xxxxx.mirror.aliyuncs.com", ## 此处地址中的xxxxx无效,需要自己去获取
"https://mirror.baidubce.com"
]
## 其中aliyun的源要用自己账号去登录获取
3. 拉取相关镜像
如果直接就开始使用,默认拉取的是github仓库的镜像,国内环境网速不行,且没有相关国内镜像源,试了若干次,都以卡死告终.
幸好,有人已经拉取成功并上传到其他仓库中,这些仓库包含在我们配置的国内仓库中,因此可以顺利拉取.
使用以下命令拉取:
docker pull japaric/x86_64-unknown-linux-musl
4. 项目中配置cross,指定image
因为我们使用的不是默认的image,所以要在项目中配置说明,在项目Cargo.toml中添加如下:
[package.metadata.cross.target.x86_64-unknown-linux-musl]
image = "japaric/x86_64-unknown-linux-musl"
4. 开始编译
此处就可以开始使用corss编译了,我们的镜像是 x86_64-unknown-linux-musl,
注意指定target,那么在项目中执行如下命令即可:
cross build --release --target x86_64-unknown-linux-musl
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤