• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Rust 编程语言
2
3[![Rust 社区](https://img.shields.io/badge/Rust_Community%20-Join_us-brightgreen?style=plastic&logo=rust)](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/community272
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