
从源码构建 Rust 编译器前需要准备什么依赖与硬件python、C 编译器与磁盘内存要求【免费下载链接】rustEmpowering everyone to build reliable and efficient software.项目地址: https://gitcode.com/GitHub_Trending/ru/rust如果你打算从源码构建rustc而不仅是通过安装器获得一个现成的 Rust 工具链最典型的卡点是环境没备齐Python 版本不对、缺 C 编译器、磁盘空间不足导致增量缓存反复清理、核心数太少导致构建在内存换页中卡死。本文按 INSTALL.md 的依赖清单和 rustc-dev-guide 的 prerequisites 章节 的硬件建议把构建前需要准备的软件依赖和硬件条件列成一条可核对的清单并给出构建后如何确认成功的验证方式。适用于在 Unix 或 Windows 上以本地机器构建 rustc 的场景。构建前必须安装的软件依赖INSTALL.md 给出的基础依赖清单如下Unix 环境依赖说明引自原文python3 or 2.7构建系统x.py由 Python 脚本驱动git克隆源码、更新子模块一个 C 编译器为宿主构建时cc就够交叉编译可能需要额外编译器curlWindows 上不需要pkg-config在 Linux 上编译且目标也是 Linux 时需要libiconvDebian 系发行版的 glibc 已自带另外两条条件性依赖构建 Cargo 时还需要 OpenSSL大多数 Unix 发行版上是libssl-dev或openssl-devel。由于 rustc 本身用 Rust 编写必须用一个预编译的 snapshot 版本来自举构建所以源码构建要求有互联网连接用于拉取 snapshot且操作系统必须能运行可用的 snapshot 二进制。LLVM 这一大块依赖自己编译还是下载是否自己编译 LLVM 直接决定依赖清单的规模和构建时长这是准备阶段最需要做的决定从源码编译 LLVM需要额外工具g、clang或 MSVC版本要求见 LLVM 官方文档、ninja或 GNUmake3.81 及以上官方推荐 Ninja尤其是 Windows、相应版本的cmake部分 Linux 发行版如 Fedora、Ubuntu可能还需要libstdc-static。不从源码编译在 tier 1 或 tier 2 的 host tools 平台上可以设置llvm.download-ci-llvm true直接下载 CI 构建的 LLVM从而跳过上面整组 C 工具链依赖。如果不走下载路线则需要本机已安装 LLVM 且llvm-config在PATH中。官方在 prerequisites 文档 中明确建议下载 CI 的 LLVM 以避免从源码构建这是缩短依赖清单和构建时间的默认推荐路径。Windows 上的依赖安装方式INSTALL.md 对 Windows 给了三条路径winget 安装基础依赖在终端执行winget install -e Python.Python.3 winget install -e Kitware.CMake winget install -e Git.Git安装后需把C:\Program Files\CMake\bin加入系统PATH变量。MinGW/MSYS2 路径安装 MSYS2 和 Git for Windows 后在 MINGW64或 MINGW32终端中执行# 更新包镜像全新安装 MSYS2 时可能需要 pacman -Sy pacman-mirrors # 安装 Rust 构建所需工具构建 32 位编译器时把 x86_64 换成 i686 pacman -S make \ diffutils \ tar \ mingw-w64-x86_64-python \ mingw-w64-x86_64-cmake \ mingw-w64-x86_64-gcc \ mingw-w64-x86_64-ninja文档特别提醒不要使用msys2子系统下的python2、cmake、ninja包构建历史上有过因此失败的记录所以要用上面的mingw-w64-x86_64-*变体。MSVC 路径额外需要 Visual Studio 2022或更新版本的 C 构建工具供rustc使用其链接器2019 等旧版本可能可用但不再主动测试以及较新的 Windows 10 或 11 SDK。Windows 上存在 GNU ABI 与 MSVC ABI 两套构建三元组如x86_64-pc-windows-gnu、x86_64-pc-windows-msvc选择取决于你要与哪一侧的 C/C 库互操作可通过--buildtriple或./configure --set build.buildtriple指定。硬件与资源要求磁盘、内存、核心数prerequisites 文档 没有硬性硬件门槛但给出了以下建议值互联网连接引导过程会更新 git 子模块并下载 beta 编译器网络不必很快但必须可用。30GB 以上空闲磁盘。空间不足的话你必须不断清理增量缓存。8GB 以上内存RAM。2 个以上核心核心越多帮助越大10 个、20 个甚至更多都不嫌多。文档同时明确不建议在 Raspberry Pi 上尝试构建——编译 rustc 计算开销很大机器配置越高构建越快。关于磁盘how-to-build-and-run 文档 给出了更宽的实际范围构建可能需要 10 到 15GB 以上而构建到 stage 1 以后可能消耗显著的空闲磁盘有时约 100GB如果还单独维护了 rust-analyzer 的构建目录如build-rust-analyzer会进一步放大。这两处描述并不矛盾30GB 是开发指南的日常建议下限100GB 是深度构建超过 stage 1、多构建目录时可能触及的量级。规划磁盘时可按 30GB 起步深度构建则预留更大空间。时间预期方面文档说明在配置中等偏上的笔记本上完整构建超过半小时建议下载 CI 的 LLVM 而不是从源码构建。配置 bootstrap.toml确认 LLVM 下载与增量编译选项依赖备齐后在源码树根目录用构建系统生成配置文件。how-to-build-and-run 文档 的推荐做法./x setup在交互选择中选compiler默认值它会自动完成初始化并生成带合理默认值的bootstrap.toml。也可以手写该文件——全部可选项见 bootstrap.example.toml。与本文主题直接相关的三个配置项# 下载 CI 构建的 LLVM跳过从 src/llvm-project 源码编译 llvm.download-ci-llvm truellvm.download-ci-llvm设为if-unchanged时仅在llvm-project未修改时下载不确定自己是否在 tier 1 目标上时也可以用这个值目前所有 tier 1 目标都支持。如果空闲磁盘紧张可关闭增量编译rust.incremental false。代价是编译时间变长rebase 之后尤其明显但能省下大量增量缓存空间。一个容易踩到的坑如果已经构建过 rustc之后再改动与 LLVM 相关的设置可能需要执行./x clean --all才能让后续配置变更生效注意./x clean本身不会触发 LLVM 重新构建。执行构建并确认构建成功准备就绪后的构建入口是仓库根目录的x.pyUnix 上以./x.py subcommand [flags]或./x运行# 构建 rustc、std 和 rustdoc ./x build # 只构建 stage1rustc 标准库是最常用的本地构建 ./x build library如果要产出可安装的版本INSTALL.md 给出./x.py build ./x.py install完成后./x.py install会把rustc、rustdoc以及默认的 Cargo放入$PREFIX/bin不想要 Cargo 可在./configure时传--set build.extendedfalse。验证方式构建成功后把产物挂为 rustup 工具链再用版本号确认它确实是你本地构建的rustup toolchain link stage1 build/host/stage1 rustc stage1 -vV输出中的版本号以-dev结尾即表明这是从本地环境构建出来的编译器。以下是 how-to-build-and-run 文档中的示例输出$ rustc stage1 -vV rustc 1.48.0-dev binary: rustc commit-hash: unknown commit-date: unknown host: x86_64-unknown-linux-gnu release: 1.48.0-dev LLVM version: 11.0上面是文档示例实际输出的版本号与 LLVM 版本取决于你构建时的源码状态。构建异常缓慢或磁盘吃紧时的处理构建系统会和cargo一样尽量用满所有核心这有时会让内存吃紧。文档给出的判断和处理路径用-j调整并发任务数。如果完整构建耗时超过约 45 分钟到一小时多半是把大部分时间花在内存换页上此时改用-j1。磁盘不足时关闭增量编译rust.incremental false牺牲编译速度换缓存空间。机器配置不高时的通用策略本地只跑./x check快速检查代码能否编译把完整构建和测试留给推送 PR 分支后的 CI。需要清理构建目录时用./x clean直接rm -rf build也可以但之后 LLVM 要整体重建即使机器很快也耗时很久。到此依赖、硬件与配置的核对闭环python/git/C 编译器/curl 等基础工具就位、按 30GB 磁盘 8GB 内存 2 核起步配置机器、bootstrap.toml中用llvm.download-ci-llvm跳过 LLVM 源码编译然后跑./x build最后用rustc stage1 -vV看到以-dev结尾的版本号即为构建成功。平台边界上注意只有 host tools 平台有预编译的 snapshot 可用没有 host tools 的平台必须走交叉编译。【免费下载链接】rustEmpowering everyone to build reliable and efficient software.项目地址: https://gitcode.com/GitHub_Trending/ru/rust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考