#build #publishing #package #github #rustc-auto-publish #repository #version

nightly build hkalbasi-rustc-ap-compiletest

自动发布的hkalbasi/rust仓库中commit 46a65c9c17f0fe25522ab229b6e7da90a3dc3008的compiletest包版本。此crate的发布脚本位于:https://github.com/hkalbasi/rustc-auto-publish

2个版本

0.0.20231215 2023年12月14日
0.0.20231214 2023年12月14日

#492 in 构建工具

MIT/Apache

400KB
9K SLoC

Rust编程语言

Rust Community

这是Rust的主源代码仓库。它包含编译器、标准库和文档。

注意:此README是为用户而不是为贡献者编写的。如果您希望对编译器进行贡献,请阅读CONTRIBUTING.md

快速入门

阅读"安装"部分,来自The Book

从源码安装

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.7
  • git
  • 编译器(当为目标系统编译时,cc就足够了;交叉编译可能需要额外的编译器)
  • curl(在Windows上不需要)
  • 如果是在Linux上编译并针对Linux,则需要pkg-config
  • libiconv(在基于Debian的发行版中已包含在glibc中)

要构建Cargo,还需要OpenSSL(大多数Unix发行版上为libssl-devopenssl-devel)。

如果是从源代码构建LLVM,则需要额外的工具

  • g++clang++或MSVC,版本信息可在LLVM的文档中找到
  • ninja,或GNU make 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系统上构建

构建步骤

  1. 使用git克隆源代码

    git clone https://github.com/rust-lang/rust.git
    cd rust
    
  2. 配置构建设置

    ./configure
    

    如果您计划使用x.py install创建安装,建议您将prefix值设置为[install]部分中的一个目录:./configure --set install.prefix=<path>

  3. 构建和安装

    ./x.py build && ./x.py install
    

    完成时,./x.py install会将几个程序放入$PREFIX/binrustc(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

  1. 下载最新的 MSYS2 安装程序 并完成安装程序。

  2. 从 MSYS2 安装目录(例如 C:\msys64)运行 mingw32_shell.batmingw64_shell.bat,根据您是否想要 32 位或 64 位 Rust 而定。(截至您拥有的 MSYS2 最新版本,您必须从命令行运行 msys2_shell.cmd -mingw32msys2_shell.cmd -mingw64。)

  3. 在此终端中,安装所需的工具

    # 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
    
  4. 导航到 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-APACHELICENSE-MITCOPYRIGHT

商标

Rust Foundation拥有并保护Rust和Cargo的商标和标志(“Rust商标”)。

如果您想使用这些名称或品牌,请阅读媒体指南

第三方标志可能受第三方版权和商标的保护。有关详细信息,请参阅许可证

依赖项

~6–50MB
~720K SLoC