不用rustup,Windows下gnu版Rust安装与开发环境配置
写在前面
本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的过程。Win10上亲测有效。
预备知识:
- rustup:rustup 是Rust 的安装和管理工具,感兴趣的读者可自行上网了解。
- “gnu版本的Rust”:Rust有工具链(toolchain)的概念,是指开发Rust应用程序所需的一系列组件或工具[1]。如果工具链中的gcc编译器和ABI是微软的,就是msvc版本;如果是GNU的,就是gnu版本[2]。
请您注意:
- 请不要轻易复制粘贴本文中的命令,请保持仔细和小心,根据您的具体情况更改。
- 本文所提到的环境变量都是指系统环境变量,而不是用户环境变量,请注意区分。
- 您的系统最好具备访问外网的能力(非必须,但推荐),否则可能无法访问下面的某些网站,也无法下载某些资源。
请添加到系统环境变量
正文
故事背景
现在网上几乎所有的Windows安装Rust的教程都是通过rustup安装msvc版本,即便是有个别介绍安装gnu版本的,也是通过rustup来安装。但这不适合在下,第一,在下不想安装Visual Studio C++ Build tools;第二,在利用rustup安装gnu版本的Rust时,总是遇到如下报错(报错信息经过了简化):
could not rename component file from 'D:\aaa\xxx.dll' to 'D:\bbb\xxx.dll': 另一个程序正在使用此文件,进程无法访问。 (os error 32)
在下猜测出错的原因可能是:rustup生成 D:\aaa\xxx.dll 后,该dll被在下电脑上的安全软件扫描了,当rustup想将它移动到另一个位置时,发现文件被占用。问题无解的地方在于,在下没有权限关闭上述安全软件。
于是在下开始了 install rust without rustup 的探索之旅。
步骤
一、安装MinGW64
step1. 到这里下载最新版的编译好的mingw64,如winlibs-x86_64-posix-seh-gcc-12.0.1-snapshot20220123-mingw-w64-9.0.0-r1.7z,注意选择带x86_64字样的下载。



下载MinGW64
step2. 下载后直接解压,将得到的mingw64文件夹拷贝您感兴趣的位置。
step3. 然后配置系统环境变量。比如mingw64文件夹的全路径是 D:\software\mingw64,那就把 D:\software\mingw64\bin 添加到系统的PATH环境中。至于如何添加环境变量,请不会的读者自行学习。对于一些容易的、没有坑的步骤,本文不赘述,下同。
二、安装gnu版Rust
step1. 到这里下载安装包,稳妥起见,下载stable版本。然后正常安装就行,安装过程会自动添加环境变量。可以自定义安装位置,如 D:\software\Rust。



下载gnu版Rust
step2. 打开CMD或PowerShell,运行 cargo -V 和 rustc -V ,如出现类似下面的输出,证明成功。



安装成功截图
三、安装Rust源码
step1. 到这里下载源码。假如,您想要把源码安装在 D:\software 目录下,就把下载好的源码移到这里。



下载Rust源码
step2. 请确保您的系统上有可加压.tar.gz的工具,如7-Zip。
step3. 将解压工具的可执行文件的路径(如 D:\software\7-Zip)添加到系统PATH环境变量。
step4. 以管理员身份(注意,这是必须的)打开CMD或PowerShell,cd到源码所在目录(如 D:\software),依次执行 7z x rustc-1.58.1-src.tar.gz和 7z x rustc-1.58.1-src.tar ,解压后,可得到 rustc-1.58.1-src 文件夹。(注意:1. 如果您不是使用7-Zip作为解压工具,请自行查询您所用工具的解压命令行;2. rustc-1.58.1-src.tar.gz 是下载的源码压缩包,您下载的可能不是这个名字,对应的,解压出的文件夹也不叫 rustc-1.58.1-src;3. 由于压缩包比较大,解压需要较长时间,请耐心等待)
四、配置VSCode + rust-analyzer
step1. 安装VSCode并为其安装rust-analyzer,不会安装VSCode的读者请自行学习,然后用最简单的方法安装rust-analyzer就行,参考这里。此时rust-analyzer多半还不能用,原因是找不到stdlib,请转step2。如果由于网络原因您不能安装rust-analyzer,请自行想办法或转step3.
step2. 添加系统环境变量 RUST_SRC_PATH,值为 D:\software\rustc-1.58.1-src\library(假设上一步您将源码安装在D:\software下,且解压后的源码文件夹名为rustc-1.58.1-src,请根据您的实际情况更改),如下图。配置好环境变量后,重启VSCode,应该就可以了。注意,您需要打开一个rust项目,并耐心等待rust-analyzer加载成功,才能看到下图所示结果。



添加系统环境变量RUST_SRC_PATH



rust-analyzer安装成功截图
step3. 如果您无法用step1的方法安装rust-analyzer,可以编译源码安装。请确保您安装了Node.js(后面会用到其中包含的npm,如果您正常安装了Node.js,npm.exe对应的路径已添加到系统PATH环境变量,如果没有,请您手动添加),同时将 D:\software\VSCode 和 D:\software\VSCode\bin(这里假设您的VSCode的安装路径是 D:\software\VSCode,请根据您的实际情况调整)添加到了系统PATH环境变量。
step4. 请打开CMD或PowerShell(这次不必以管理员身份打开),cd到 D:\software\rustc-1.58.1-src\src\tools\rust-analyzer(请根据您的Rust源码安装位置调整相应的目录),然后依次执行 cargo xtask install 和 cargo xtask install --server 。(编译安装参考了[3],只不过我们上一步安装的Rust源码中已包含了rust-analyzer的源码,不用从github上下载了。编译过程很长,大概20多分钟,请您耐心等待)。
step5. 安装完成后,请根据命令行窗口最后的输出(如 warning: be sure to add `D:\software\Rust\.cargo\bin` to your PATH to be able to run the installed binaries)将对应的路径添加到系统PATH环境变量。另外,不要忘了执行step2。
五、 配置CLion + IntelliJ Rust
step1. 下载安装CLion,如果想免费用,请您自行想办法。然后,打开CLion, 依次点击File -> Settings -> Plugins,搜索Rust,然后点击安装。也可通过先下载插件,再安装的方法,请读者自己学习如何操作。可以参考官网(如果您已能访问外网但还是无法访问该网站,请查看您是否在hosts文件中将jetbrains的相关网站屏蔽)。
step2. 依次点击File -> Settings -> Languages & Frameworks -> Rust,然后进行相关配置。条件所限,恕不能截图,可参考下图(图片来源)。如果您的Rust安装目录是 D:\software\Rust,Rust源码安装目录是 D:\software\rustc-1.58.1-src,那么,第一行配置(Toolchain location)就填 D:\software\Rust\bin,第二行配置(Standard library)就填 D:\software\rustc-1.58.1-src 或 D:\software\rustc-1.58.1-src\library(亲测两者都行)。



配置示意图
step3. 利用CLion打开Rust项目,耐心等待Rust插件初始化成功。
写在后面
本文是在下的实践经验记录,希望能帮到有同样需求的读者。由于在下才疏学浅、能力有限,错误疏漏之处在所难免,欢迎广大读者批评指正,您的批评是在下前进的不竭动力。
参考
[1] What exactly is a Rust "toolchain"? - Stack Overflow
[2] Difference between the gnu and msvc toolchains? : rust
[3] Windows下编译安装rust-analyzer并启用VSCode扩展 - 知乎
不用rustup,Windows下gnu版Rust安装与开发环境配置的更多相关文章
- windows下Qt5.4.2 for android开发环境配置
安装包链接: http://yunpan.cn/cFs5tikVA83hK 访问密码 d029 本人所有的软件都安装在D:/Qt 1. 安装 Qt 5.4.2 不在讲述 2, 安装p ...
- Windows下visual studio code搭建golang开发环境
Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...
- Ubuntu16.04安装后开发环境配置和常用软件安装
Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安 ...
- Fedora和Ubuntu下安装OpenGL开发环境配置
Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...
- windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)
CDH 5.x搭建请参考CentOS 7离线安装CDH 5.16.1完全指南(含各种错误处理). 如果使用的是cloudera quickstart vm,则只能在linux服务器中使用eclipse ...
- Elementary OS安装及开发环境配置(一)
前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...
- mysql学习-windows下绿色版mysql安装问题解决办法
1.下载绿色版mysql 从该地址http://dev.mysql.com/downloads/mysql/ 中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3.将根目录下的my-d ...
- Windows下用Eclipse搭建C/C++开发环境
本文假定你已经熟悉Java,Eclipse的安装,并能顺利启动和运行Eclipse.此外因为各软件版本在不断更新,有些地方可能不准确,以最新的.原文资料为准. 距上一次写和调C++程序,已经5.6年了 ...
- windows下sublime text的node.js开发环境搭建
首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了 ...
随机推荐
- x86架构应用如何向Arm架构低成本迁移
曾几何时,无论是在服务器还是个人电脑,CPU芯片领域一直是 Intel 独占鳌头,旗下的 X86_64 架构被广泛采用.然而王权没有永恒,近年来 Arm64 架构异军突起,服务器端有华为鲲鹏920高性 ...
- 手写Webserver
一.反射 反射Reflection:把java类中的各种结构(方法.属性.构造器.类名)映射成一个个的java对象.利用反射技术可以对一个类进行解剖,反射是框架设计的灵魂 //在运行期间,一个类,只有 ...
- JVM调优2-远程监控
监控远程JVM VisualJVM不仅是可以监控本地jvm进程,还可以监控远程的jvm进程,需要借助于JMX技术实现. 什么是JMX JMX(Java Management Extensions,即J ...
- 达索CATIA许可证(License)管理使用和优化
现下主流的V6版本CATIA,是由达索公司提供授权的浮动型License,其客户端通过企业内网从许可证服务器获得许可证,最少要有一个服务器端DS License Server提供一定数量的Licens ...
- 《剑指offer》面试题42. 连续子数组的最大和
问题描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4 ...
- manjora20使用体验
#第一次评估 适合小白日常办公,不适合计算机研究人员 ##优点 稳定流畅,运行速度比Ubuntu快很多 界面优美,UI很好 强大的aur软件库应有尽有,几乎是所有软件都有 中国源和arch社区提供的包 ...
- C# 反射调用拓展类方法
今天封装Protobuf封包时候遇到一个问题: Protobuf的反序列化方法MergeFrom,是写在扩展类里的:c#拓展类 通过反射获取不到这个方法,就没法使用Type来泛型封装... 然而仔细一 ...
- JavaFx 实现按钮防抖
原文地址:JavaFx 实现按钮防抖 | Stars-One的杂货小窝 Android平台的APP,一般是有需要进行设置按钮的防抖(即在短时间内无法多次点击),我想在JavaFx项目中也是实现防抖功能 ...
- mysql主从模型下如果保证主误删除数据,尽可能避免数据丢失方案
- redis集群运维
Redis 的数据类型? Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zsetsorted set(有序集合) redis优势 速度快, ...