写点什么

rust 程序静态编译的两种方法总结

  • 2025-05-08
    福建
  • 本文字数:863 字

    阅读完需:约 3 分钟

1. 概述


经过我的探索,总结了两种 rust 程序静态编译的方法,理论上两种方法都适用于 windows、mac os 和 linux(mac os 未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你.


2.方法一


2.1 添加配置文件


在项目的同级文件夹下新建“.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-staticlibstdc++-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.总结


优先推荐使用方法一,但据网友说方法一某些库无法成功打包,此时可以考虑采用方法二的方式打包,但会有性能损失,需自行考量。


文章转载自:Jiajie6591

原文链接:https://www.cnblogs.com/jiajie6591/p/18864015

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2025-04-01 加入

还未添加个人简介

评论

发布
暂无评论
rust程序静态编译的两种方法总结_rust_电子尖叫食人鱼_InfoQ写作社区