2个版本
0.0.20231215 | 2023年12月14日 |
---|---|
0.0.20231214 | 2023年12月14日 |
#492 in 构建工具
400KB
9K SLoC
Rust编程语言
这是Rust的主源代码仓库。它包含编译器、标准库和文档。
注意:此README是为用户而不是为贡献者编写的。如果您希望对编译器进行贡献,请阅读CONTRIBUTING.md。
快速入门
从源码安装
Rust构建系统使用名为x.py
的Python脚本构建编译器,该脚本管理自举过程。它位于项目的根目录。它还使用名为config.toml
的文件来确定构建的各种配置设置。您可以在config.example.toml
中查看选项的完整列表。
在大多数Unix系统上,可以直接以以下格式运行x.py
命令
./x.py <subcommand> [flags]
这是文档和示例假定您正在运行x.py
的方式。如果这在您的平台上不起作用,请参阅rustc dev guide。
有关x.py
的更多信息,可以通过运行它并带有--help
标志来找到,或者阅读rustc dev guide。
依赖项
请确保已安装以下依赖项
python
3或2.7git
- 编译器(当为目标系统编译时,
cc
就足够了;交叉编译可能需要额外的编译器) curl
(在Windows上不需要)- 如果是在Linux上编译并针对Linux,则需要
pkg-config
libiconv
(在基于Debian的发行版中已包含在glibc中)
要构建Cargo,还需要OpenSSL(大多数Unix发行版上为libssl-dev
或openssl-devel
)。
如果是从源代码构建LLVM,则需要额外的工具
g++
,clang++
或MSVC,版本信息可在LLVM的文档中找到ninja
,或GNUmake
3.81或更高版本(建议使用Ninja,尤其是在Windows上)cmake
3.13.4或更高版本- 在某些Linux发行版(如Fedora和Ubuntu)上可能需要
libstdc++-static
在第一级或第二级宿主工具平台,您也可以通过设置llvm.download-ci-llvm = true
来下载LLVM。否则,您需要安装LLVM并在路径中包含llvm-config
。有关更多信息,请参阅rustc-dev-guide。
在类Unix系统上构建
构建步骤
-
使用
git
克隆源代码git clone https://github.com/rust-lang/rust.git cd rust
-
配置构建设置
./configure
如果您计划使用
x.py install
创建安装,建议您将prefix
值设置为[install]
部分中的一个目录:./configure --set install.prefix=<path>
-
构建和安装
./x.py build && ./x.py install
完成时,
./x.py install
会将几个程序放入$PREFIX/bin
:rustc
(Rust编译器)和rustdoc
(API文档工具)。默认情况下,它还会包含Cargo(Rust的包管理器)。您可以通过将--set build.extended=false
传递给./configure
来禁用此行为。
配置和Make
本项目提供了一个配置脚本和makefile(后者只是调用x.py
)。推荐使用./configure
来程序化生成config.toml
。不建议使用make
(我们建议直接使用x.py
),但它受支持,我们尽量不无谓地破坏它。
./configure
make && sudo make install
configure
生成的config.toml
也可以与正常的x.py
调用一起使用。
在Windows上构建
在Windows上,我们建议使用winget通过在终端中运行以下命令来安装依赖项
winget install -e Python.Python.3
winget install -e Kitware.CMake
winget install -e Git.Git
然后编辑系统的 PATH
变量并添加:C:\Program Files\CMake\bin
。请参阅来自 Java 文档的编辑系统 PATH
的指南。
Windows 上使用两种主要的 ABIs:Visual Studio 使用的原生 (MSVC) ABI 和 GCC 工具链使用的 GNU ABI。你需要哪个版本的 Rust 主要取决于你想与哪些 C/C++ 库进行交互。使用 MSVC 构建的 Rust 与 Visual Studio 生成的软件交互,使用 GNU 构建与使用 MinGW/MSYS2 工具链构建的 GNU 软件交互。
MinGW
MSYS2 可以用于轻松地在 Windows 上构建 Rust
-
下载最新的 MSYS2 安装程序 并完成安装程序。
-
从 MSYS2 安装目录(例如
C:\msys64
)运行mingw32_shell.bat
或mingw64_shell.bat
,根据您是否想要 32 位或 64 位 Rust 而定。(截至您拥有的 MSYS2 最新版本,您必须从命令行运行msys2_shell.cmd -mingw32
或msys2_shell.cmd -mingw64
。) -
在此终端中,安装所需的工具
# Update package mirrors (may be needed if you have a fresh install of MSYS2) pacman -Sy pacman-mirrors # Install build tools needed for Rust. If you're building a 32-bit compiler, # then replace "x86_64" below with "i686". If you've already got Git, Python, # or CMake installed and in PATH you can remove them from this list. # Note that it is important that you do **not** use the 'python2', 'cmake', # and 'ninja' packages from the 'msys2' subsystem. # The build has historically been known to fail with these packages. pacman -S git \ make \ diffutils \ tar \ mingw-w64-x86_64-python \ mingw-w64-x86_64-cmake \ mingw-w64-x86_64-gcc \ mingw-w64-x86_64-ninja
-
导航到 Rust 的源代码(或克隆它),然后构建它
python x.py setup user && python x.py build && python x.py install
MSVC
Rust 的 MSVC 构建还需要安装 Visual Studio 2017(或更高版本)以便 rustc
可以使用其链接器。最简单的方法是获取 Visual Studio,并检查 "C++ 构建工具" 和 "Windows 10 SDK" 工作负载。
(如果您自己安装 CMake,请注意 "Windows 的 C++ CMake 工具" 不要包含在 "单个组件" 之下。)
安装这些依赖项后,您可以在 cmd.exe
命令行 shell 中构建编译器
python x.py setup user
python x.py build
目前,构建 Rust 只能与某些已知版本的 Visual Studio 一起使用。如果您安装了更近期的版本并且构建系统不理解,您可能需要强制 rustbuild 使用较旧的版本。这可以通过在运行引导之前手动调用适当的 vcvars 文件来完成。
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
python x.py build
指定 ABI
每个特定的 ABI 也都可以通过使用显式的构建三元组从任一环境(例如,在 PowerShell 中使用 GNU ABI)中使用。可用的 Windows 构建三元组如下
- GNU ABI(使用 GCC)
i686-pc-windows-gnu
x86_64-pc-windows-gnu
- MSVC ABI
i686-pc-windows-msvc
x86_64-pc-windows-msvc
可以通过在调用 x.py
命令时指定 --build=<triple>
或创建一个 config.toml
文件(如在类 Unix 系统上构建中所述),并将 --set build.build=<triple>
传递给 ./configure
来指定构建三元组。
构建文档
如果您想构建文档,几乎是一样的
./x.py doc
生成的文档将出现在用于该 ABI 的 build
目录下的 doc
中。也就是说,如果 ABI 是 x86_64-pc-windows-msvc
,则目录将是 build\x86_64-pc-windows-msvc\doc
。
注意事项
由于Rust编译器是用Rust编写的,因此它必须由早期开发阶段制作的预编译的“快照”版本(自己制作的)来构建。因此,源代码构建需要网络连接来获取快照,以及能够执行现有快照二进制的操作系统。
有关支持平台的列表,请参阅https://doc.rust-lang.net.cn/nightly/rustc/platform-support.html。只有“主机工具”平台有可用的预编译快照二进制文件;要为目标没有主机工具的平台进行编译,您必须进行交叉编译。
您可能会发现其他平台也能工作,但这些是我们官方支持的构建环境,最有可能成功。
获取帮助
有关聊天平台和论坛的列表,请参阅https://rust-lang.net.cn/community。
贡献
请参阅CONTRIBUTING.md。
许可证
Rust主要根据MIT许可证和Apache许可证(版本2.0)的条款进行分发,部分内容受各种类似BSD的许可证的保护。
有关详细信息,请参阅LICENSE-APACHE、LICENSE-MIT和COPYRIGHT。
商标
Rust Foundation拥有并保护Rust和Cargo的商标和标志(“Rust商标”)。
如果您想使用这些名称或品牌,请阅读媒体指南。
第三方标志可能受第三方版权和商标的保护。有关详细信息,请参阅许可证。
依赖项
~6–50MB
~720K SLoC