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

1. 概述

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

2.方法一

2.1 添加配置文件

在项目的同级文件夹下新建".cargo/config.toml"文件,根据使用的系统,添加下面的配置

toml 复制代码
#windows
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]`
toml 复制代码
#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.总结

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

以上

相关推荐
Flynt6 小时前
pnpm 12 换上了 Rust 内核,我拿项目实测了一轮构建速度
rust·vite·前端工程化
传奇开心果编程11 小时前
【Xilem基础语法学与练】第8课:条件渲染(one_of)
学习·rust·前端框架
qwsaedca12 小时前
在Mac上跑 Kokoro TTS经验总结
rust·mac·tts
qwsaedca13 小时前
Kokoro TTS v1.1 voices 文件格式逆向分析
rust
老猿讲编程15 小时前
【Eclipse OpenSOVD学习之五】拓扑引擎(Topology)
学习·rust·eclipse·sovd
object not found15 小时前
Nuxt4去掉body中默认的边距
开发语言·后端·rust
梦醒沉醉1 天前
4、Rust参考手册——Crate和源文件
rust
chainbees1 天前
Windows 系统 Rust 运行环境搭建
rust
k4m7v2pz1 天前
从 Python 搬到 Rust:pyglet MIDI DAW 变成 egui 鬼畜采样器的迁移复盘
开发语言·python·rust