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

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-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.总结

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

文章转载自: ++Jiajie6591++

原文链接: rust程序静态编译的两种方法总结 - Jiajie6591 - 博客园

体验地址: JNPF快速开发平台

相关推荐
夏幻灵2 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码2 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
苍何2 小时前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
bkspiderx3 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
代码什么用3 小时前
Spring基础使用
java·后端·spring
程序员老陆3 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光4 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
明月_清风4 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
码云数智-园园4 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
蜗牛互联网4 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端