首页 > 系统相关 >使用win10 wsl子系统将 rust 程序静态编译为linux可执行文件

使用win10 wsl子系统将 rust 程序静态编译为linux可执行文件

时间:2024-12-16 23:10:09浏览次数:7  
标签:musl wsl 编译 linux win10 安装 子系统 rust

chapter Ⅰ 事情起因

最近在学习rust, 想把一部分java服务迁移至rust编写,但由于公司服务器都是linux系统,所以在找windows下交叉编译为linux可执行文件的方法,把bing首页搜索的结果试了个遍都不行, 始终报错“musl-gcc”无法找到,搜遍全网都无法解决。 最终在我不断尝试的过程中逐渐发现解决办法,遂将整个过程记录下来。

chapter Ⅱ 安装方法(windows安装rust和vs code略过)

1. 启用wsl 2

根据微软的官方文档,使用下面的命令会默认安装wsl2 并下载ubuntu镜像,整个过程可能会重启一到两次
wsl --install
微软官方文档: https://learn.microsoft.com/zh-cn/windows/wsl/install
下载好后打开微软应用商店,输入你想装的linux版本,点击获取
image
imageimage

下载好后可以点击启动或者打开,出现以下提示
image
不用理他,直接点击右上角的关闭,这样我们下次再打开就是使用的root用户,不会创建多余的用户和密码,当然也可以选择根据提示创建用户和密码,使用起来除了一些命令需要加sudo之外没有任何不同。

2. 添加开发环境

2.1. 打开rust官网,复制以下命令,安装rust工具链

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
image
安装完成后提示说环境变量还没生效,手动source一下或者直接关掉重新启动子系统窗口
image
完成后运行rustup -V查看一下rust的相关版本信息
image

2.2. 安装rust的linux静态编译工具,等待安装完成

rustup target add x86_64-unknown-linux-musl
因为我已经安装过所以显示如下图
image

2.3. 安装"musl-gcc"

打开musl官网,https://musl.libc.org/ ,下载最新版的源代码
image
将下载的安装包粘贴到子系统的home路径下(其他路径也可以)
image
直接复制粘贴,爽歪歪!!!
进入子系统,cd /home,然后执行tar -zxvf musl-1.2.5.tar.gz解压缩,下载的哪个版本就解压哪个版本
依次等待执行cd musl-1.2.5./configure, make, make install
./configure运行后可能会出现这个提示说没有c编译器
image
不用慌,运行下面这条命令,安装开发套件,安装完毕后继续执行./configure以及后面的命令
yum groupinstall "Development Tools"

2.4. 将"musl-gcc"加入环境变量

执行 vi /etc/profile, 将export PATH=$PATH:/usr/local/musl/bin/;加入到文件最后,关闭并保存
image
保存后关闭窗口,然后重新打开一个子系统窗口输入musl-gcc -v,如果正确显示版本信息,则表示已经安装成功
image

3. linux静态编译

在主系统打开rust项目文件夹,按住shift键,点击鼠标右键,点击在此处打开linux shell
image
开始编译cargo build --release --target=x86_64-unknown-linux-musl
等待编译完成,上传服务器,运行
image
enjoy it!

chapter Ⅲ 总结

因为以前没有编译过c++项目,所以对编译相关的知识知之甚少,通过本次的实践尝试,学到了一些编译链接的知识,留下一些微不足道的痕迹,希望对你有帮助。
同时对于rust的编译工具链表示你在干什么,msvc模式下的控制台警告至今无法消除
image

标签:musl,wsl,编译,linux,win10,安装,子系统,rust
From: https://www.cnblogs.com/jiajie6591/p/18611250

相关文章

  • Linux中输入和输出基本过程
    1.文件内核级缓冲区前面在如何理解Linux一切皆文件的特点中提到为了保证在Linux中所有进程访问文件时的方式趋近相同,在file结构体中存在一个files_operations结构体指针,对应的结构体保存所有文件操作的函数指针(这个结构体也被称为操作表)每一个file结构体中除了有自己......
  • Windows系统下无头构建Linux系统下的so文件
     (开始执行以下步骤时,确保已经在系统下安装2017版Labview软件,及其驱动软件,压缩包内包含32位java插件安装包与NILinuxReal-TimeEclipseEdition的C/C++开发工具包***建议均使用默认路径安装***C盘空间配置大一些)1.首先我们需要在Windows系统里面安装Java插件(建议使用32位......
  • AlmaLinux 10.0 Beta “Purple Lion” - RHEL 二进制兼容免费发行版
    AlmaLinux10.0Beta“PurpleLion”-RHEL二进制兼容免费发行版由社区提供的免费Linux操作系统,RHEL二进制兼容发行版请访问原文链接:https://sysin.org/blog/almalinux-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org由社区提供的免费Linux操作系统一......
  • Linux安装之后你需要做的事
    #从里面选一个源就可以了,优先推荐ustc,我这边的1000M宽带可以跑到70M-83M/s#vim/etc/apt/source.list#官方源debhttp://http.kali.org/kalikali-rollingmainnon-freecontribdeb-srchttp://http.kali.org/kalikali-rollingmainnon-freecontrib #中科大源deb......
  • LInux基础——vsftpd问题
    1、问题:客户端报错“响应:500OOPS:failedtoopenxferloglogfile:/var/log/vsftpd/vsftpd.conf”根因:没有创建vsftpd日志目录#创建vsftpd日志目录mkdir/var/log/vsftpd 2、问题:修改默认vsftpd登入端口根因:/etc/vsftpd/vsftpd.conf#将默认登入端口21修改未132......
  • Fortify Static Code Analyzer 24.2 for macOS, Linux & Windows - 静态应用安全测试
    FortifyStaticCodeAnalyzer24.2formacOS,Linux&Windows-静态应用安全测试FortifySCA-代码漏洞扫描工具|静态代码测试|代码安全分析请访问原文链接:https://sysin.org/blog/fortify-static-code-analyzer/查看最新版。原创作品,转载请保留出处。作者主页:sysin.......
  • 腾讯通升级替代方案,可与RTX并行使用,兼容Linux系统
    一、腾讯通RTX继续使用的主要难题随着腾讯通RTX停止更新并从官网下架,用户不仅无法继续获得更新、技术支持和资源下载,还面临以下无法解决的使用问题:●不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac操作系统,无法在基于Linux内核的国产操作系统(如统信UOS、银河麒麟)及移动设......
  • linux shell中 " " 与 ' ' 有什么区别?
     创建文件[root@master-1~]#catpath.serviceC:\\ProgramFiles\\MyApp\qwe\\qq\\az需求:使用sed将\\替换为\执行sed命令,并使用双引号""[root@master-1~]#sed-i"s/\\\\/\\/g"path.servicesed:-e表达式#1,字符8:未终止的“s”命令执行sed命令,并......
  • 如何在linux下安装和卸载kde桌面。
    系统:linuxlite7.0目的:安装kde桌面。方法:打开终端,输入下列指令,一、安装:最小安装-仅仅安装桌面和基本组件sudoaptinstallkde-plasma-desktop标准安装-会安装桌面以及常用软件:sudoaptinstallkde-standard这一步会安装许多软件包,耗间较长。安装过程中会让你选择X登录......
  • Win10 wsl 迁移到 D 盘
    wsl关闭wsl--shutdown查看系统wsl--list导出tar文件wsl--exportUbuntu-24.04D:/export.tar删除C盘的虚拟机wsl--unregisterUbuntu-24.04导入新的虚拟机wsl--importUbuntu-24.04D:\wsl\D:\export.tar--version2查看状态https:/......