上官谨言 發表於 2025-5-8 09:01:15

使用win10 wsl子系统如何将 rust 程序静态编译为linux可执行文件

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>chapter Ⅰ 事情起因</li><li>chapter Ⅱ 安装方法(windows安装rust和vs code略过)</li><ul class="second_class_ul"><li>1. 启用wsl 2</li><li>2. 添加开发环境</li><ul class="third_class_ul"><li>2.1. 打开rust官网,复制以下命令,安装rust工具链</li><li>2.2. 安装rust的linux静态编译工具,等待安装完成</li><li>2.3. 安装&quot;musl-gcc&quot;</li><li>2.4. 将&quot;musl-gcc&quot;加入环境变量</li></ul><li>3. linux静态编译</li><ul class="third_class_ul"></ul></ul><li>chapter Ⅲ 总结</li><ul class="second_class_ul"></ul></ul></div><p class="maodian"></p><h2>chapter Ⅰ 事情起因</h2>
<p>最近在学习rust, 想把一部分java服务迁移至rust编写,但由于公司服务器都是linux系统,所以在找windows下交叉编译为linux可执行文件的方法,把bing首页搜索的结果试了个遍都不行, 始终报错&ldquo;musl-gcc&rdquo;无法找到,搜遍全网都无法解决。 最终在我不断尝试的过程中逐渐发现解决办法,遂将整个过程记录下来。</p>
<p class="maodian"></p><h2>chapter Ⅱ 安装方法(windows安装rust和vs code略过)</h2>
<p class="maodian"></p><h3>1. 启用wsl 2</h3>
<p>根据微软的官方文档,使用下面的命令会默认安装wsl2 并下载linux镜像,整个过程可能会重启一到两次<code>wsl --install</code>微软官方文档: https://learn.microsoft.com/zh-cn/windows/wsl/install下载好后打开微软应用商店,输入你想装的linux版本,点击获取</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856421.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856422.png" /></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856433.png" /></p>
<p>下载好后可以点击启动或者打开,出现以下提示</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856434.png" /></p>
<p>不用理他,直接点击右上角的关闭,这样我们下次再打开就是使用的root用户,不会创建多余的用户和密码,当然也可以选择根据提示创建用户和密码,使用起来除了一些命令需要加sudo之外没有任何不同。</p>
<p class="maodian"></p><h3>2. 添加开发环境</h3>
<p class="maodian"></p><h4>2.1. 打开rust官网,复制以下命令,安装rust工具链</h4>
<p><code>curl --proto &#39;=https&#39; --tlsv1.2 -sSf https://sh.rustup.rs | sh</code></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856435.png" /></p>
<p>安装完成后提示说环境变量还没生效,手动source一下或者直接关掉重新启动子系统窗口</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856436.png" /></p>
<p>完成后运行<code>rustup -V</code>查看一下rust的相关版本信息</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856437.png" /></p>
<p class="maodian"></p><h4>2.2. 安装rust的linux静态编译工具,等待安装完成</h4>
<p><code>rustup target add x86_64-unknown-linux-musl</code>因为我已经安装过所以显示如下图</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856438.png" /></p>
<p class="maodian"></p><h4>2.3. 安装&quot;musl-gcc&quot;</h4>
<p>打开musl官网,https://musl.libc.org/ ,下载最新版的源代码</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/202505080856439.png" /></p>
<p>将下载的压缩包粘贴到子系统的home路径下(其他路径也可以)</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564310.png" /></p>
<p>直接复制粘贴,爽歪歪!!!进入子系统,<code>cd /home</code>,然后执行<code>tar -zxvf musl-1.2.5.tar.gz</code>解压缩,下载的哪个版本就解压哪个版本依次等待执行<code>cd musl-1.2.5</code>,<code>./configure</code>, <code>make</code>, <code>make install</code><code>./configure</code>运行后可能会出现这个提示说没有c编译器</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564311.png" /></p>
<p>不用慌,运行下面这条命令,安装开发套件,安装完毕后继续执行<code>./configure</code>以及后面的命令<code>yum groupinstall &quot;Development Tools&quot;</code></p>
<p class="maodian"></p><h4>2.4. 将&quot;musl-gcc&quot;加入环境变量</h4>
<p>执行 <code>vi /etc/profile</code>, 将<code>export PATH=$PATH:/usr/local/musl/bin/;</code>加入到文件最后,关闭并保存</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564312.png" /></p>
<p>保存后关闭窗口,然后重新打开一个子系统窗口输入<code>musl-gcc -v</code>,如果正确显示版本信息,则表示已经安装成功</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564313.png" /></p>
<p class="maodian"></p><h3>3. linux静态编译</h3>
<p>在主系统打开rust项目文件夹,按住shift键,点击鼠标右键,点击在此处打开linux shell</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564314.png" /></p>
<p>开始编译<code>cargo build --release --target=x86_64-unknown-linux-musl</code>等待编译完成,上传服务器,运行</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564315.png" /></p>
<p>enjoy it!</p>
<p class="maodian"></p><h2>chapter Ⅲ 总结</h2>
<p>因为以前没有编译过c++项目,所以对编译相关的知识知之甚少,通过本次的实践尝试,学到了一些编译链接的知识,留下一些微不足道的痕迹,希望对你有帮助。同时对于rust的编译工具链表示你在干什么,msvc模式下的控制台警告至今无法消除</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/2025050808564316.png" /></p>
<p>到此这篇关于使用win10 wsl子系统将 rust 程序静态编译为linux可执行文件的文章就介绍到这了,更多相关rust 程序静态编译为linux可执行文件内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>rust程序静态编译的两种方法实例小结</li><li>php静态编译swoole-cli并调用rust的动态链接库</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 使用win10 wsl子系统如何将 rust 程序静态编译为linux可执行文件