热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Rust+CLion+Mingw64的安装

Rust语言是现代编程语言思想非常优秀的实践,很早就听说大名但一直没去学习,最近突发兴趣想了解了解。工欲善其事必先利其器,故打算配置一下编译环境,防止遗忘故进行了一些总结。Wind

Rust语言是现代编程语言思想非常优秀的实践,很早就听说大名但一直没去学习,最近突发兴趣想了解了解。工欲善其事必先利其器,故打算配置一下编译环境,防止遗忘故进行了一些总结。

Windows平台下的各个软件版本:

Rust:1.51.0

CLion:2021.1

Mingw64:8.1.0

注:本篇博文为亲自实践的总结,内容分为【教程】和【原理】两部分,前者为了提供直接的配置方案,后者解释原理并提供额外的策略;若软件版本号不相同直接照搬【教程】可能出现问题,此时可以参考【原理】部分自行探索。

 

【教程】

1. Mingw64的下载

若下载速度很慢或失效则需要去寻找其他的镜像站点或者挂VPN。

下载完成后解压并将Mingw64放到电脑的任意位置,将bin目录的路径放入电脑环境变量的Path中。

2. CLion的安装

官网下载安装即可,学生账号可以申请免费试用,否则需要购买。

3. 配置CLion的编译工具链为MinGW

随便新建一个Project,打开后,从工具栏进入设置配置:File->Settings->Build,Execution,Deployment->Toolchains

一般而言,此时应该能看到右侧存在一个MinGW(default),Environment那一项对应自己mingw64所放置的路径,且自动检测到整个工具链,则不需要任何操作。


  • MinGW不在最上侧,通过上图1处的上下箭头进行调整;
  • 不存在MinGW,则点击上图1处的加号,选择MinGW,默认会自动检测并填充每项空格,若没有检测到则需要手动添加。

4. 安装Rust(建议关闭CLion)

1)下载rustup-init.exe(先不运行)

2)配置安装路径

如果希望Rust默认安装则跳过该步骤,若需要安装在其他地方,则需要添加如下两个环境变量:

CARGO_HOME:cargo的安装路径,本人设置成了D:\Rust\cargo

RUSTUP_HOME:rustc的安装路径,本人设置成了D:\Rust\rustup

3)运行rustup-init.exe

出现提示后输入2,则会依次询问安装配置,其中host triple填写为x86_64-pc-windows-gnu,其他直接回车即可

等到配置完,注意下图红线位置是否与填写的一致,输入1或者直接回车等待安装完成即可。

4)配置默认链接器

在cargo的安装目录(若配置了CARGO_HOME则为该路径,也就是D:\Rust\cargo目录,否则得找到默认的安装路径,一般为C盘用户目录下的.cargo)下新建配置文件,文件名为config或者config.toml均可,添加如下两行:

[target.x86_64-pc-windows-gnu]

linker = "D:\\mingw64\\bin\\gcc.exe"

第二行为mingw64的gcc路径,需要根据自己的真实安装位置修改 。

5. 运行CLion,安装Rust插件(File->Settings->Plugins,搜索Rust安装第一个即可),重启CLion,新建Project就能看到Rust选项了,即可享受被Rust虐之旅

 

【原理】

1.Mingw

MinGW为windows下的GNU工具链,主要是用到了其提供的C/C++编译链。目前Rust语言还处于不断迭代之中,需要用到C/C++的工具链协助链接,所以在4(4)这个步骤相当于告诉Rust编译器gcc的位置。相信不久的未来随着Rust的应用越来越广泛,会形成更加完善的生态不再依赖外部。

2.Clion

CLion为Jetbrain公式开发的跨平台C/C++集成开发环境,由于目前还没有特别主流的Rust集成环境,故现在选择了CLion。

3.配置CLion的编译工具链为MinGW

对于一门编程语言来说,要么存在编译器(如gcc)要么存在解释器(如JVM),上文的教程中我们在CLion里面配置了相应的C语言编译工具。个人认为自行配置这些环境可以帮助理解编程语言这个工具(编程语言只是工具不是目的,学习一种编程语言一定是为了完成特定的功能或任务,或者觉得好玩),而一开始就用Visual Studio会让人变懒。网上有大量的教程讲解如何下载和配置MinGW,故不再赘述。

4.Rust

Rust的学习成本较高,首先自定义安装就不是很方便,需要借助命令行来配置,未来可能会出现更为便捷的安装配置方式。

环境变量是操作系统的运行环境配置,比如Windows的环境变量Path表示默认搜索路径,对于用户来说可以将环境变量看做全局标签,Rust就是通过读取环境变量的值来决定自己的安装和编译行为的。这也为何在安装Rust之前配置RUSTUP_HOME和CARGO_HOME的原因。

其中RUSTUP_HOME表示Rust编译器的安装目录,CARGO_HOME表示是Rust的包管理工具cargo的安装路径。编程语言通过特定的工具进行包管理是非常高效的行为,比如Python的pip工具,Java的包管理器Maven等。当然如果经常写C/C++的话可能并不熟悉包管理,在C++中通过头文件来管理外部的函数或库,其实这是非常低效的行为,现代编程语言很多都抛弃了这个功能(头文件系统是C++的累赘,否则为何C++ 20要引入模块(Modules)这个功能)。个人的观点是,技术是发展的,所有过去学会的技术绝不是一定不易的,不断学习才能取得进步。

5. 下载CLion的Rust插件

因为CLion本身是C/C++开发平台,并不能直接编写并调试Rust程序,故需要额外的插件,好在Jetbrain官方就提供了这样的插件,直接安装就行,这提供了对Rust代码的自动补全、颜色高亮等等功能。

需要注意的是,通过CLion新建Rust项目目前还不是很稳定,有时会出现无法新建的bug,这时在powershell上使用cargo新建(cargo new 项目名)即可,编写和调试代码再借助CLion。



推荐阅读
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在本地环境中调试远程服务器上的网站代码执行问题,可以通过以下步骤实现:首先,在本地安装 Visual Studio 并配置远程调试工具。接着,确保服务器和本地机器之间的网络连接畅通,并正确设置防火墙规则以允许调试流量。最后,使用 Visual Studio 的远程调试功能连接到服务器,进行代码调试。这种方法不仅提高了开发效率,还减少了在服务器上直接操作的风险。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 在64位Linux系统上编译GCC时,可能会遇到一个错误,即在构建共享库过程中,`.libs/alloc.o` 文件中的重定位 `R_X86_64_32` 无法应用于 `.rodata.str1.8` 段。这一问题通常与目标文件的地址空间限制有关,需要通过调整编译选项或修改源代码来解决。具体来说,可以尝试使用 `-fPIC` 选项以生成位置无关代码,或者检查相关对象文件的链接方式。 ... [详细]
  • 如何利用正则表达式(regexp)实现高效的模式匹配?本文探讨了正则表达式在编程中的应用,并分析了一个示例程序中存在的问题。通过具体的代码示例,指出该程序在定义和使用正则表达式时的不当之处,旨在帮助读者更好地理解和应用正则表达式技术。 ... [详细]
  • 在并发编程中,`as-if-serial`原则确保了即使编译器和处理器对指令进行重排序,单线程的执行结果也不会受到影响。这一原则要求编译器、运行时环境和处理器必须严格遵守,以保证程序的正确性。本文深入探讨了`volatile`关键字的内存模型,详细分析了其在多线程环境中的可见性和有序性特性,以及如何通过`as-if-serial`规则来确保数据的一致性和可靠性。 ... [详细]
  • 深入解析 ELF 文件格式与静态链接技术
    本文详细探讨了ELF文件格式及其在静态链接过程中的应用。在C/C++代码转化为可执行文件的过程中,需经过预处理、编译、汇编和链接等关键步骤。最终生成的可执行文件不仅包含系统可识别的机器码,还遵循了严格的文件结构规范,以确保其在操作系统中的正确加载和执行。 ... [详细]
  • 本文详细介绍了在DS-5开发工作室中集成最新编译器工具链的方法与步骤。通过逐步指导,帮助用户高效地配置和使用最新的编译器,以提升开发效率和代码质量。此外,还提供了常见问题的解决方案和最佳实践建议,确保用户能够顺利进行开发环境的升级。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
author-avatar
江苏蓝凯-我家在装修_708
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有