1# Rust 编程语言 2 3[](https://www.rust-lang.org/community) 4 5这是 [Rust] 的主要源代码库。它包含编译器、标准库和文档、 6标准库和文档。 7 8[Rust]: https://www.rust-lang.org/ 9 10**注意:本 README 是为用户而非贡献者准备的。** 11如果您希望为编译器做出贡献,请阅读 12[CONTRIBUTING.md](CONTRIBUTING.md)。 13 14### 快速入门 15 16阅读 [The Book] 中的 ["安装"]。 17 18["安装"]: https://doc.rust-lang.org/book/ch01-01-installation.html 19[本书]: https://doc.rust-lang.org/book/index.html 20 21## 从源文件安装 22 23Rust 编译系统使用一个名为 `x.py` 的 Python 脚本来编译编译器、 24管理引导过程。它位于项目的根目录下。 25它还使用一个名为 `config.toml` 的文件来确定编译时的各种配置设置。 26设置。您可以在 27`config.example.toml`. 28 29在大多数 Unix 系统上都可以直接运行 `x.py` 命令,格式如下 30格式直接运行: 31 32```sh 33./x.py <子命令> [标志] 34``` 35 36文档和示例都假定你是这样运行 `x.py`的。 37如果这在你的平台上不起作用,请参阅 [rustc dev guide][rustcguidebuild]。 38平台上不起作用,请参阅 [rustc dev guide][rustcguidebuild] 。 39 40关于 `x.py` 的更多信息,可以通过使用 `--help`标记来运行它 41或阅读[rustc dev guide][rustcguidebuild]。 42 43[gettingstarted]: https://rustc-dev-guide.rust-lang.org/getting-started.html 44[rustcguidebuild]: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html#what-is-xpy 45 46#### 依赖关系 47 48确保已安装依赖项: 49 50* `python` 3 或 2.7 51* `git` 52* C 语言编译器(为主机编译时,使用 `cc` 即可;交叉编译时可能需要额外的编译器 53 需要额外的编译器) 54* `curl`(在 Windows 上不需要) 55* 如果在 Linux 上编译并以 Linux 为目标,则需要 `pkg-config` 56* `libiconv` (在基于 Debian 的发行版中已包含在 glibc 中) 57 58要编译 Cargo,还需要 OpenSSL(在大多数 Unix 发行版上为 `libssl-dev` 或 `openssl-devel` )。 59在大多数 Unix 发行版上)。 60 61如果从源代码编译 LLVM,还需要额外的工具: 62 63* `g++`、`clang++`或 MSVC,其版本列于 64 [LLVM 的文档](https://llvm.org/docs/GettingStarted.html#host-c-toolchain-both-compiler-and-standard-library) 65* `ninja`,或 GNU `make` 3.81 或更高版本(推荐使用 Ninja,尤其是在 66 Windows) 67* `cmake` 3.13.4 或更高版本 68* 在某些 Linux 发行版上可能需要 `libstdc++-static` ,如 Fedora 69 和 Ubuntu 70 71在带主机工具平台的第 1 层或第 2 层,您还可以选择下载 72通过设置 `llvm.download-ci-llvm = true` 下载 LLVM。 73否则,需要安装 LLVM 并在路径中设置 `llvm-config`。 74更多信息请参见[the rustc-dev-guide for more info][sysllvm]。 75 76[sysllvm]: https://rustc-dev-guide.rust-lang.org/building/new-target.html#using-pre-built-llvm 77 78 79### 在类 Unix 系统上构建 80 81#### 构建步骤 82 831.使用 `git` 克隆 [源代码]: 84 85 ```sh 86 git clone https://github.com/rust-lang/rust.git 87 cd rust 88 ``` 89 90[source]: https://github.com/rust-lang/rust 91 922.配置构建设置: 93 94 ```sh 95 ./configure 96 ``` 97 98 如果计划使用 `x.py install` 创建安装,建议将 `[install]`部分中的 `prefix` 值设置一个 99 目录:`./configure --set install.prefix=<path>` 100 1013.构建并安装: 102 103 ```sh 104 ./x.py build && ./x.py install 105 ``` 106 107 完成后,`./x.py install` 会将几个程序放入 108 `$PREFIX/bin` 中:`rustc`,Rust 编译器,和`rustdoc`,API 文档工具。 109 API 文档工具。默认情况下,它还会包含 [Cargo],Rust 的 110 包管理器。你可以通过 111 `--set build.extended=false` 到 `./configure`。 112 113[Cargo]: https://github.com/rust-lang/cargo 114 115#### 配置和 Make 116 117该项目提供了 configure 脚本和 makefile(后者只是 118调用 `x.py`)。`./configure `是以编程方式生成 119`config.toml`.不推荐使用 `make`(我们建议直接使用 `x.py` 120直接使用),但它是受支持的,我们尽量避免不必要地破坏它。 121 122```sh 123./configure 124make && sudo make install 125``` 126 127`configure` 会生成一个 `config.toml` 文件,该文件也可用于普通的 `x.py` 128调用。 129 130### 在 Windows 上构建 131 132在 Windows 上,我们建议使用 [winget] 安装依赖项,在终端运行 133在终端运行 134 135```powershell 136winget install -e Python.Python.3 137winget install -e Kitware.CMake 138winget install -e Git.Git 139``` 140 141然后编辑系统的 `PATH` 变量并添加:`C:\Program Files\CMake\bin`. 142参见 143[关于编辑系统 `PATH` 的指南](https://www.java.com/en/download/help/path.html) 144Java 文档。 145 146[winget]:https://github.com/microsoft/winget-cli 147 148Windows 上有两种著名的 ABI:Visual Studio 使用的本地 (MSVC) ABI 和 GCC 工具链使用的 GNU ABI。 149Visual Studio 使用的本地(MSVC)ABI 和 GCC 工具链使用的 GNU ABI。您需要哪个版本的 Rust 150主要取决于你想与哪些 C/C++ 库互操作。 151使用 MSVC 版本的 Rust 与 Visual Studio 制作的软件进行互操作 152工具链构建的 GNU 软件进行互操作。 153工具链构建的 GNU 软件进行互操作。 154 155#### MinGW 156 157[MSYS2][msys2]可用于在 Windows 上轻松构建 Rust: 158 159[msys2]: https://www.msys2.org/ 160 1611.下载最新的 [MSYS2 安装程序][msys2],并完成安装。 162 1632.从 MSYS2 安装目录(例如 `C:\msys64` )运行 `mingw32_shell.bat` 或 `mingw64_shell.bat` 。 164 目录(例如 `C:\msys64`)中运行`mingw32_shell.bat`或`mingw64_shell.bat`,具体取决于您需要 32 位还是 64 位的 Rust。 165 Rust。(从 MSYS2 的最新版本开始,您必须运行 `msys2_shell.cmd -mingw32` 或 `msys2_shell.cmd -mingw64`)。 166 1673.从该终端安装所需的工具: 168 169 ```sh 170 # 更新软件包镜像(如果重新安装了 MSYS2,可能需要这样做) 171 pacman -Sy pacman-mirrors 172 173 # 安装 Rust 所需的编译工具。如果要编译 32 位编译器、 174 # 则将下面的 "x86_64 "替换为 "i686"。如果你已经安装了 Git、Python、 175 # 或 CMake 已安装并在 PATH 中,则可将它们从列表中移除。 176 # 请注意,切勿***使用 "python2"、"cmake "和 "ninja "软件包、 177 # 以及 "msys2 "子系统中的 "ninja "软件包。 178 # 历史上,使用这些软件包会导致编译失败。 179 pacman -S git \ 180 make 181 diffutils \ 182 tar 183 mingw-w64-x86_64-python \ 184 mingw-w64-x86_64-cmake \ 185 mingw-w64-x86_64-gcc 186 mingw-w64-x86_64-ninja 187 ``` 188 1894.导航到 Rust 的源代码(或克隆它),然后构建它: 190 191 ```sh 192 python x.py setup user && python x.py build && python x.py install 193 ``` 194 195#### MSVC 196 197Rust 的 MSVC 版本还需要安装 Visual Studio 2017 198(或更高版本),以便 `rustc` 可以使用其链接器。最简单的方法是获取 199[Visual Studio],检查 "C++ 编译工具 "和 "Windows 10 SDK "工作量。 200 201[Visual Studio]: https://visualstudio.microsoft.com/downloads/ 202 203(如果您自己安装 CMake,请注意 "C++ CMake tools for 204Windows 工具 "不包含在 "单个组件 "中)。 205 206安装好这些依赖项后,就可以在 `cmd.exe` shell 中编译编译器了。 207shell 中编译编译器: 208 209```sh 210python x.py setup user 211python x.py build 212``` 213 214目前,构建 Rust 只适用于某些已知版本的 Visual Studio。 215如果你安装了较新的版本,而编译系统无法理解,你可能需要强制 rustbuild 使用较旧的版本。 216理解,则可能需要强制 rustbuild 使用旧版本。 217这可以通过在运行 218引导程序。 219 220```批处理 221CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" 222python x.py build 223``` 224 225#### 指定 ABI 226 227每个特定的 ABI 也可以在任一环境中使用(例如,在 PowerShell 中使用 228例如,在 PowerShell 中使用 GNU ABI)。可用的 229Windows 构建三元组有 230- GNU ABI(使用 GCC) 231 - i686-pc-windows-gnu 232 - x86_64-pc-windows-gnu 233- MSVC ABI 234 - i686-pc-windows-msvc 235 - x86_64-pc-windows-msvc 236 237在调用 `x.py` 命令时,可通过指定 `--build=<triple>` 来指定三重编译。 238命令时指定 `--build=<triple>` 或创建一个 `config.toml` 文件(参见 239[在类 Unix 系统上构建](#在类-unix-系统上构建)中所述),并通过 240`--set build.build=<triple>` 到 `./configure`。 241 242## 构建文档 243 244如果你想构建文档,方法几乎一样: 245 246```sh 247./x.py doc 248``` 249 250生成的文档将出现在所用 ABI 的 `build` 目录中的 `doc` 下。 251目录中的 `doc` 下。也就是说,如果 ABI 是 `x86_64-pc-windows-msvc`,则目录 252将是 `build\x86_64-pc-windows-msvc\doc`。 253 254## 注意事项 255 256由于 Rust 编译器是用 Rust 编写的,它必须由一个预编译的 257"快照 "版本(在早期开发阶段制作)构建。 258因此,源代码编译需要互联网连接来获取快照,还需要能执行可用快照二进制文件的操作系统。 259能执行可用快照二进制文件的操作系统。 260 261有关 262支持的平台列表。 263只有 "主机工具 "平台才有预编译的快照二进制文件;要为没有主机工具的平台编译,必须交叉编译快照二进制文件。 264必须交叉编译。 265 266您可能会发现其他平台也可以使用,但这些是我们官方支持的 267编译环境最有可能正常工作。 268 269## 获取帮助 270 271聊天平台和论坛列表请参见 https://www.rust-lang.org/community。 272 273## 投稿 274 275请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 276 277### 许可 278 279Rust 主要根据 MIT 许可和 280Apache License(2.0 版)的条款进行发布,部分内容受各种类 BSD 281许可证。 282 283参见 [LICENSE-APACHE](LICENSE-APACHE)、[LICENSE-MIT](LICENSE-MIT) 和 284[COPYRIGHT](COPYRIGHT) 获取详细信息。 285 286## 商标 287 288[Rust 基金会][Rust 基金会]拥有并保护 Rust 和 Cargo 289商标和徽标(以下简称 "Rust 商标")。 290 291如果您想使用这些名称或品牌,请阅读 292[媒体指南][媒体指南]。 293 294第三方徽标可能受第三方版权和商标的保护。请参阅 295[许可证][许可证]了解详情。 296 297[Rust 基金会]: https://foundation.rust-lang.org/ 298[媒体指南]: https://foundation.rust-lang.org/policies/logo-policy-and-media-guide/ 299[许可证]: https://www.rust-lang.org/policies/licenses 300