如何使用RUST做静态编译,让编译出来的程序不再依赖其他库?

在编译RUST CLI之后,发给客户,如果客户的电脑没有安装相应的依赖,那会运行不了,那如何让RUST程序自带干粮,不依赖这些七七八八的库呢?

如果你用的是RUST GNU版本,那可以直接发给客户,本身就自带了依赖项,不会有问题,本文主要说的是MSVC版本的RUST:

找到 ~/.cargo/config文件,如果没有,请自己创建,然后加入以下代码,就启用静态编译了:

[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

如下:如果用DIE软件来检测出你写出的RUST程序的依赖,加载exe文件后,点Import,发现只依赖系统自带的dll动态链接库,因此客户不用再安装其他dll了。

原文地址:https://www.cnblogs.com/kimkat/p/12550140.html

时间: 2024-11-13 09:56:33

如何使用RUST做静态编译,让编译出来的程序不再依赖其他库?的相关文章

编译Ngnix遇到的问题,查看程序依赖的库文件

要点:ldd 可以读取每个可以运行的程序依赖的 so 文件. 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more objs/autoconf.err 查看openssl所依赖的库文件 ldd /usr/bin/openssl ldd –u /usr/bin/openssl objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出 objdump -t obj 输出目标文件的符号表 o

关于静态与动态编译arm平台程序的比较

由于最近弄个console程序,调用了readline,ncurses库,这两个动态库加起来有四百多k,而程序其实很小,其他地方也没使用到这两个库 所以想静态编译看看console程序有多大. #arm-linux-gcc cli.c -o console libreadline.a  libncurses.a #ls -l total 1932 -rwxrwxr-x 1 root root   8427 Jul  7 15:19 cli -rw-r--r-- 1 root root   664

编译安装C源码程序程序

编译安装 程序的组成部分 1 二进制文件:可运行的程序文件: 2 库文件:lib目录下的文件: 3 配置文件:一般位于/etc/目录下: 4 帮助文档:man命令使用的帮助文档: 编译安装 1 安装GCC编译器: yum -y install "Development Tools"; 2 解压源码包:tar -xvf xxx.tar -C /usr/local/: 3 切换目录:cd /usr/local/xxx: 4 执行configure文件:./configure 4.11 该文

预编译,编译,汇编,链接

预编译的文件扩展名是ii gcc -E hello.c -o hello.i 预编译过程主要处理源代码文件当中的以#开头的预编译指令,比如#include就是把头文件插入到这个位置 #define就是把所有的宏定义展开,还有就是删除所有的注释 编译就是把i文件编译成为汇编代码文件,汇编代码扩展名是.s gcc -S hello.i -o hello.s 但是现在版本的gcc把预编译和编译两个步骤合并成为一个步骤, gcc -S hello.c -o hello.s 或者编译器ccl:ccl he

系列篇|编译可在Android上运行的依赖库(一):glib库

前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库交叉编译到Android平台上才能成功的编译glib库,系列文章中除<编译可在Android上运行的glib库>外的其他交叉编译文章均是介绍如何对glib依赖库进行交叉编译.以上,所以叫系列文章,因为这些文章完整的介绍了如何编译可在Android上运行的glib库. 文章价值 这些文章的核心价值是

【转】反编译获取任何微信小程序源码(完)

一.前言最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了一个阿里妈妈淘宝客小程序的前端实现,过程一言难尽,差不多两周时间过去了,发现小程序的坑远比想象的要多的多!!在实际练手中,完全是黑盒的,看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来.很想一窥源码,查看究竟,看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑. 于是就想到获取到小程序地源文件,然后再对其进行反编译还原为源代码,来作为学习参考.我百度了

关于安卓Apk反编译 再编译回来不能正常安装的问题

使用apktool反编译apk之后,再编译回去,发现不能正常安装,而使用ApkToolKitV3.0反编译,再编译回去就可以正常安装. 主要原因是因为使用apktool编译回没有签名. 所以不能安装, 而ApkToolKitV3.0 编译回去是签名了的. 用apktool编译后, 再使用signapk.jar签名就可以了. java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-signed.apk 以下是我打包好的apk

vs2010编译出的exe“应用程序无法正常启动(0xc0150002)”

今天编译出一个使用ogre1.6.5动态库的应用程序,启动时报"应用程序无法正常启动(0xc0150002)"的错误提示. 编译环境是Win10+VS2010.这个错误可以在Windows 日志中查看到详细信息(计算机--管理--事件查看器--Windows日志--应用程序). 错误原因是:ogremain连接两个旧版本的lib库(可能是vs2005编译出的).因此分别找到对应库的源码,在vs2010环境下重新编译出类库,再进行链接. 再次编译OgreMain.dll时又出现一个问题:

WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中——浏览器里运行其他语言的程序?

Mozilla.谷歌.微软和苹果已经决定开发一种面向Web的二进制格式.该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中. 几年前,我们在InfoQ上讨论过面向Web的通用字节码的优点(见<讨论:我们是否需要一种通用的Web字节码?>),概括了创建这样一种格式的困难.其中提及的一个主要问题是主要的浏览器制造商无法达成一致:Mozilla在推asm.js,谷歌支持PNaCI,苹果在开发FLTJIT,而微软没有对其中的任何一种表示出兴趣.但现