1. 概述
经过我的探索,总结了两种rust程序静态编译的方法,理论上两种方法都适用于windows、mac os和linux(mac os未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你.
2.方法一
2.1 添加配置文件
在项目src的同级文件夹下新建“.cargo/config.toml”文件,根据使用的系统,添加下面的配置
#windows | |
[target.x86_64-pc-windows-msvc] | |
rustflags = ["-C", "target-feature=+crt-static"]` |
#linux | |
[target.x86_64-unknown-linux-gnu] | |
rustflags = ["-C", "target-feature=+crt-static"] |
理论上mac os也可以,将[target.x86_64-unknown-linux-gnu]替换为自己使用的工具链就可以了
2.2 打包运行
2.2.1 winsows
在windows下运行cargo build --release就可以直接打包为静态链接的程序了;
2.2.2 linux
在linux下运行cargo build --release --target=x86_64-unknown-linux-gnu,可能会出现如下提示
/usr/bin/ld: cannot find -lxxx,这是缺少gcc-libc的静态库文件
需要安装的有两个glibc-static和libstdc++-static;
在这里可以找到这两个静态库: 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
注意要选择自己对应的系统!!!
页面向下拉,有个install howto 的标题,直接运行里面的命令(如截图里的dnf --enablerepo=ol9_codeready_builder install libstdc++-static)就可以安装了,安装完就可以愉快的打包了;

3.方法二
此方法为使用musl库打包为静态链接,参考我的另一篇文章,实测该方法打包的静态文件性能会比gcc稍差一点;
使用musl将rust程序静态编译
4.总结
优先推荐使用方法一,但据网友说方法一某些库无法成功打包,此时可以考虑采用方法二的方式打包,但会有性能损失,需自行考量。
行业拓展
分享一个面向研发人群使用的前后端分离的低代码软件——JNPF。
基于 Java Boot/.Net Core双引擎,它适配国产化,支持主流数据库和操作系统,提供五十几种高频预制组件,内置了常用的后台管理系统使用场景和实用模版,通过简单的拖拉拽操作,开发者能够高效完成软件开发,提高开发效率,减少代码编写工作。
JNPF基于SpringBoot+Vue.js,提供了一个适合所有水平用户的低代码学习平台,无论是有经验的开发者还是编程新手,都可以在这里找到适合自己的学习路径。
此外,JNPF支持全源码交付,完全支持根据公司、项目需求、业务需求进行二次改造开发或内网部署,具备多角色门户、登录认证、组织管理、角色授权、表单设计、流程设计、页面配置、报表设计、门户配置、代码生成工具等开箱即用的在线服务。
890

被折叠的 条评论
为什么被折叠?



