写在前面

本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的过程。Win10上亲测有效。

预备知识:

  1. rustup:rustup 是Rust 的安装和管理工具,感兴趣的读者可自行上网了解。
  2. “gnu版本的Rust”:Rust有工具链(toolchain)的概念,是指开发Rust应用程序所需的一系列组件或工具[1]。如果工具链中的gcc编译器和ABI是微软的,就是msvc版本;如果是GNU的,就是gnu版本[2]。

请您注意:

  1. 请不要轻易复制粘贴本文中的命令,请保持仔细和小心,根据您的具体情况更改。
  2. 本文所提到的环境变量都是指系统环境变量,而不是用户环境变量,请注意区分。
  3. 您的系统最好具备访问外网的能力(非必须,但推荐),否则可能无法访问下面的某些网站,也无法下载某些资源。

请添加到系统环境变量

正文

故事背景

现在网上几乎所有的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安装与开发环境配置的更多相关文章

  1. windows下Qt5.4.2 for android开发环境配置

    安装包链接: http://yunpan.cn/cFs5tikVA83hK 访问密码 d029   本人所有的软件都安装在D:/Qt   1. 安装 Qt 5.4.2      不在讲述 2, 安装p ...

  2. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  3. Ubuntu16.04安装后开发环境配置和常用软件安装

    Ubuntu16.04安装后1.安装常用软件搜狗输入法+编辑器Atom+浏览器Chome+视频播放器vlc+图像编辑器GIMP Image Editor安装+视频录制软件RcordMyDesktop安 ...

  4. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  5. windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)

    CDH 5.x搭建请参考CentOS 7离线安装CDH 5.16.1完全指南(含各种错误处理). 如果使用的是cloudera quickstart vm,则只能在linux服务器中使用eclipse ...

  6. Elementary OS安装及开发环境配置(一)

    前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...

  7. mysql学习-windows下绿色版mysql安装问题解决办法

    1.下载绿色版mysql 从该地址http://dev.mysql.com/downloads/mysql/ 中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3.将根目录下的my-d ...

  8. Windows下用Eclipse搭建C/C++开发环境

    本文假定你已经熟悉Java,Eclipse的安装,并能顺利启动和运行Eclipse.此外因为各软件版本在不断更新,有些地方可能不准确,以最新的.原文资料为准. 距上一次写和调C++程序,已经5.6年了 ...

  9. windows下sublime text的node.js开发环境搭建

    首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了 ...

随机推荐

  1. RocketMQ架构原理解析(一):整体架构

    RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...

  2. day 21 C语

    (1).有以下程序: 执行后的输出结果是[A] (A).256,1 (B).1,256 (C).255,1 (D).256,0 (2).以下选项中与(!a==0)的逻辑值不等价的表达式是[B] (A) ...

  3. 额外空间复杂度O(1) 的二叉树遍历 → Morris Traversal,你造吗?

    开心一刻 一天,有个粉丝遇到感情方面的问题,找我出出主意 粉丝:我女朋友吧,就是先天有点病,听不到人说话,也说不了话,现在我家里人又给我介绍了一个,我该怎么办 我:这个问题很难去解释,我觉得一个人活着 ...

  4. iGear 用了这个小魔法,模型训练速度提升 300%

    一个高精度AI模型离不开大量的优质数据集,这些数据集往往由标注结果文件和海量的图片组成.在数据量比较大的情况下,模型训练周期也会相应加长.那么有什么加快训练速度的好方法呢? 壕气的老板第一时间想到的通 ...

  5. 如何保存并复制python虚拟环境

    关于虚拟环境的一些基础概念学习了本期视频 保存 以我的一个虚拟环境示例: 在要保存的虚拟环境下使用: pip freeze > requirements.txt 复制 pip install - ...

  6. JavaScript的内存管理

    JavaScript的内存管理 1.什么是内存管理? 在了解JavaScript的内存管理之前,可以先大致熟悉一下什么是内存管理,不管什么样的编程语言,在其代码执行的过程中都是需要为其分配内存的. 不 ...

  7. Objects、Arrays、Collectors、System工具类

    Objects类 定义 位于java.util包中,JDK1.7以后操作对象的类,对对象的空,对象是否相等进行判断. 常用方法 1.public static boolean equals(Objec ...

  8. 揭秘CPU制造全过程

    转载请注明来源:https://www.cnblogs.com/hookjc/ PCPOP 众所周知,CPU是计算机的心脏,包括运算部件和控制部件,是完成各种运算和控制的核心,也是决定计算机性能的最重 ...

  9. Git refusing to merge unrelated histories (拒绝合并不相关仓库)

    感谢原文作者:lindexi_gd 原文链接:https://blog.csdn.net/lindexi_gd/article/details/52554159 本文讲的是把git在最新2.9.2,合 ...

  10. jsp 九大内置对象和其作用以及四大域对象

    感谢作者:Fangcf. 链接:https://blog.csdn.net/qq_39320833/article/details/80818442 一.jsp 九大内置对象 方法简单介绍:https ...