写在前面

本文介绍了在不使用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. elasticsearch之集成中文分词器

    IK是基于字典的一款轻量级的中文分词工具包,可以通过elasticsearch的插件机制集成: 一.集成步骤 1.在elasticsearch的安装目录下的plugin下新建ik目录: 2.在gith ...

  2. coredns 安装

    coredns简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目.CoreDNS是SkyDNS的继任者. Sky ...

  3. Vue之 css3 样式重置 代码

    reset.css @charset "utf-8";html{background-color:#fff;color:#000;font-size:12px} body,ul,o ...

  4. CKKS Part3: CKKS的加密和解密

    本篇文章翻译于CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION,主要介绍CKKS方案的加密和解密. 介绍 在上一篇 CKKS Part2: CKKS的 ...

  5. Java的代理机制

    Java的代理机制 使用代理 Proxzy 可以在运行时创建一组给定接口的新类,这种功能只有在编译时无法确定需要实现哪种接口时才需要使用. 1. 使用代理的时机 假如有一个表示接口的 Class 对象 ...

  6. 【第十四期】高德go面经

    自我介绍 选一个比较熟悉的项目讲讲 筛选日志的时候,日志格式是不一样的,你们是如何处理的? 处理日志的时候如果日志量比较大会堆积吗?怎么处理的? 日志落盘到机器上,是如何采集的? 采集服务有问题的话可 ...

  7. Git使用教程(超全,看一篇就够了)

    目录 Git介绍 Git安装 Git使用 问题与解决 推荐学习网址 Git介绍 Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系 ...

  8. go http 中间件

  9. javac、java、javap 的使用详解

    简介 JDK中常用命令 切换目录 切换目录 进入D:\zs 第一种 第二种 其他常用命令 cls: 实现清屏 cd..: 切换到上一级目录 javac 简介 来编译.java文件的.命令行下直接输入j ...

  10. git 初始化本地项目并推送到远程

    有一个新项目,开发了一些代码之后想推送到远程,具体的操作方式和命令如下: (使用 git bash) 1.切到项目目录中,例如 E:\git\smart-open 2.初始化git仓库并在本地提交 / ...