From 32038ba25b3afdb5b7383eb32f7f394e7b7fea11 Mon Sep 17 00:00:00 2001 From: Hehongyuanlove <51571751+Hehongyuanlove@users.noreply.github.com> Date: Fri, 10 Dec 2021 11:25:50 +0800 Subject: [PATCH] =?UTF-8?q?windows=20=E5=AE=89=E8=A3=85=20Rust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/first-try/installation.md | 74 +++++++++++++++++++++++++++++++++ src/img/mingw-w64-download.png | Bin 0 -> 23257 bytes 2 files changed, 74 insertions(+) create mode 100644 src/img/mingw-w64-download.png diff --git a/src/first-try/installation.md b/src/first-try/installation.md index 5d501b04..bcbf0cb1 100644 --- a/src/first-try/installation.md +++ b/src/first-try/installation.md @@ -21,6 +21,7 @@ $ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh Rust is installed now. Great! ``` + 注意,上面已经完成了Rust安装,**如果你在安装过程中遇到连接器错误,请继续往下看**,否则可以直接跳到[更新和卸载](#更新和卸载),继续阅读. Rust对运行环境和Go语言很像,几乎所有环境都可以无需安装任何依赖直接运行,但是,Rust会依赖libc和链接器linker,所以如果遇到了提示链接器无法执行的错误,你需要手动安装一个C语言编译器即可: @@ -32,10 +33,83 @@ $ xcode-select --install **在linux下** Linux 用户一般应按照相应发行版的文档来安装 GCC 或 Clang。例如,如果你使用 Ubuntu,则可安装 `build-essential`。 + ### 在 Windows 上安装 `rustup` windows上安装过程较为麻烦,因此我们专门写了一篇文章来讲解相关的安装过程,请移步:[Windows安装]() +windows上安装要求有c++ 环境以下为安装的两种方式 + +**1、x86_64-pc-windows-msvc(官方推荐)** + +先安装 [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/) 安装勾选 C++ 环境即可,安装时 可自行修改缓存路径与安装路径,避免占用过多C盘空间。 +准备好 c++ 环境后开始安装 Rust [RUSTUP-INIT](https://www.rust-lang.org/learn/get-started) 下载系统相对应的Rust安装程序,一路默认就好。 + +``` shell +PS C:\Users\Hehongyuan> rustup-init.exe +...... +Current installation options: + + + default host triple: x86_64-pc-windows-msvc + default toolchain: stable (default) + profile: default + modify PATH variable: yes + +1) Proceed with installation (default) +2) Customize installation +3) Cancel installation + +``` + +**2、x86_64-pc-windows-gnu** + +另外类别 C++ 环境其实官方也有说明 [Other Rust Installation Methods](https://forge.rust-lang.org/infra/other-installation-methods.html#other-rust-installation-methods) +个人习惯使用 [mingw-w64 官网](https://www.mingw-w64.org/) 当然也可以是[win-builds](http://win-builds.org/) +为了方便初学者使用 这里提供一个免安装的的方式 [mingw-w64下载](https://sourceforge.net/projects/mingw-w64/files/),演示选择的 `x86_64-posix-seh` 对于学习者,初次安装不需要纠结什么类别,因为切换版本很方便。下载完压缩包并解压,把压缩包下的 `/bin` 目录添加到 环境`Path` 即可 + + +1、验证 c++ 环境 +``` shell +PS C:\Users\Hehongyuan> c++ -v +Using built-in specs. +COLLECT_GCC=C:\ENV\mingw64\bin\c++.exe +COLLECT_LTO_WRAPPER=C:/ENV/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe +Target: x86_64-w64-mingw32 +Configured with: xxxxxxxxxxxxxx +gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) +``` + +2、安装 Rust 注意选择 `Customize installation` 并设置 `host triple` 为 `x86_64-pc-windows-gnu` + +``` shell +PS C:\Users\Hehongyuan> rustup-init.exe +...... +Current installation options: + + + default host triple: x86_64-pc-windows-msvc + default toolchain: stable (default) + profile: default + modify PATH variable: yes + +1) Proceed with installation (default) +2) Customize installation +3) Cancel installation +>2 + +I m going to ask you the value of each of these installation options. +You may simply press the Enter key to leave unchanged. + +Default host triple? [x86_64-pc-windows-msvc] +x86_64-pc-windows-gnu + +Default toolchain? (stable/beta/nightly/none) [stable] + + +Profile (which tools and data to install)? (minimal/default/complete) [default] + +``` ### 更新和卸载 diff --git a/src/img/mingw-w64-download.png b/src/img/mingw-w64-download.png new file mode 100644 index 0000000000000000000000000000000000000000..ebcb5228264dee532e9da057d2443201e9603900 GIT binary patch literal 23257 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 literal 0 HcmV?d00001