rust程序静态编译的两种方法实例小结
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>1. 概述</li><li>2.方法一</li><ul class="second_class_ul"><li>2.1 添加配置文件</li><li>2.2 打包运行</li><ul class="third_class_ul"><li>2.2.1 winsows</li><li>2.2.2 linux</li></ul></ul><li>3.方法二</li><ul class="second_class_ul"></ul><li>4.总结</li><ul class="second_class_ul"></ul></ul></div><p class="maodian"></p><h2>1. 概述</h2><p>经过我的探索,总结了两种rust程序静态编译的方法,理论上两种方法都适用于windows、mac os和linux(mac os未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你.</p>
<p class="maodian"></p><h2>2.方法一</h2>
<p class="maodian"></p><h3>2.1 添加配置文件</h3>
<p>在项目的同级文件夹下新建“.cargo/config.toml”文件,根据使用的系统,添加下面的配置</p>
<div class="jb51code"><pre class="brush:plain;">#windows
rustflags = ["-C", "target-feature=+crt-static"]`</pre></div>
<div class="jb51code"><pre class="brush:plain;">#linux
rustflags = ["-C", "target-feature=+crt-static"]</pre></div>
<p>理论上mac os也可以,将<code></code>替换为自己使用的工具链就可以了</p>
<p class="maodian"></p><h3>2.2 打包运行</h3>
<p class="maodian"></p><h4>2.2.1 winsows</h4>
<p>在windows下运行<code>cargo build --release</code>就可以直接打包为静态链接的程序了;</p>
<p class="maodian"></p><h4>2.2.2 linux</h4>
<p>在linux下运行<code>cargo build --release --target=x86_64-unknown-linux-gnu</code>,可能会出现如下提示<br /><code>/usr/bin/ld: cannot find -lxxx</code>,这是缺少gcc-libc的静态库文件<br />需要安装的有两个<code>glibc-static</code>和<code>libstdc++-static</code>;<br />在这里可以找到这两个静态库: https://oraclelinux.pkgs.org/这里是oracle linux9 的链接:https://oraclelinux.pkgs.org/9/ol9-codeready-builder-x86_64/glibc-static-2.34-125.0.1.el9_5.8.x86_64.rpm.html, https://oraclelinux.pkgs.org/9/ol9-codeready-builder-x86_64/libstdc++-static-11.5.0-5.0.1.el9_5.x86_64.rpm.html</p>
<p><strong>注意要选择自己对应的系统!!!</strong></p>
<p>页面向下拉,有个install howto 的标题,直接运行里面的命令(如截图里的<code>dnf --enablerepo=ol9_codeready_builder install libstdc++-static</code>)就可以安装了,安装完就可以愉快的打包了;</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202505/20255885102020.png" /></p>
<p class="maodian"></p><h2>3.方法二</h2>
<p>此方法为使用musl库打包为静态链接,参考我的另一篇文章,实测该方法打包的静态文件性能会比gcc稍差一点;<br />使用musl将rust程序静态编译</p>
<p class="maodian"></p><h2>4.总结</h2>
<p>优先推荐使用方法一,但据网友说方法一某些库无法成功打包,此时可以考虑采用方法二的方式打包,但会有性能损失,需自行考量。</p>
<p>到此这篇关于rust程序静态编译的两种方法实例小结的文章就介绍到这了,更多相关rust静态编译内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>php静态编译swoole-cli并调用rust的动态链接库</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]