本页介绍如何从源代码安装 Bazel, 常见问题的问题排查提示。
要从源代码构建 Bazel,您可以执行以下操作之一:
在不使用已知的 Bazel 二进制文件的情况下构建它 视为引导。
使用 Bazel 构建 Bazel
摘要
从 GitHub 发布页面或 Bazelisk。
从 GitHub 下载 Bazel 的源代码 提取到某个位置 或者,您也可以从 https://github.com/bazelbuild/bazel 通过 git 克隆源代码树
安装与引导相同的前提条件(请参阅 针对类似 Unix 的系统或 适用于 Windows)
使用 Bazel 构建 Bazel 的开发 build:
bazel build //src:bazel-dev
(或以下日期的bazel build //src:bazel-dev.exe
: Windows)生成的二进制文件位于
bazel-bin/src/bazel-dev
(在 Windows 上为bazel-bin\src\bazel-dev.exe
)。您可以将其复制到 立即喜欢并使用,无需进一步安装。
详细说明如下。
第 1 步:获取最新的 Bazel 版本
目标:安装或下载 Bazel 的发布版本。确保您可以
方法是在终端中输入 bazel
。
原因:要基于 GitHub 源代码树构建 Bazel,您需要 Bazel 二进制文件。你可以通过软件包管理器安装一个,也可以从 GitHub。请参阅安装 Bazel。(您也可以从 暂存(引导)。)
问题排查:
如果您无法在终端中输入
bazel
来运行 Bazel:也许 Bazel 二进制文件的目录不在 PATH 上。
这不是一个大问题。您不需要输入
bazel
,而是需要 输入完整路径也许 Bazel 二进制文件本身并不是
bazel
(在 Unix 上)或bazel.exe
(在 Windows 上)。这不是一个大问题。您可以重命名二进制文件,也可以输入 二进制文件的名称,而不是
bazel
。或许二进制文件无法执行(在 Unix 上)。
您必须运行
chmod +x /path/to/bazel
将该二进制文件设置为可执行文件。
第 2 步:从 GitHub 下载 Bazel 的源代码
如果您熟悉 Git,则只需 git clone https://github.com/bazelbuild/bazel
否则:
下载 压缩文件形式的最新来源。
将内容提取到某处。
例如,在主目录下创建一个
bazel-src
目录, 提取到此处。
第 3 步:安装必备项
安装与引导相同的前提条件(见下文)- JDK、C++ 编译器、MSYS2(如果在 Windows 上构建)等。
第 4a 步:在 Ubuntu Linux、macOS 和其他类似 Unix 的系统上构建 Bazel
如需了解适用于 Windows 的说明,请参阅在 Windows 上构建 Bazel。
目标:运行 Bazel 来构建自定义 Bazel 二进制文件 (bazel-bin/src/bazel-dev
)。
说明:
启动 Bash 终端
cd
到提取(或克隆)Bazel 来源的目录中。例如,如果您提取了主目录下的源代码,请运行以下命令:
cd ~/bazel-src
从源代码构建 Bazel:
bazel build //src:bazel-dev
或者,您也可以运行
bazel build //src:bazel --compilation_mode=opt
以生成更小的二进制文件,但构建速度较慢。您可以使用
--stamp --embed_label=X.Y.Z
标志进行构建以嵌入 Bazel 版本,以便bazel --version
输出给定版本。输出将位于
bazel-bin/src/bazel-dev
(或bazel-bin/src/bazel
)。
第 4b 步:在 Windows 上构建 Bazel
有关类 Unix 系统的说明,请参阅 Ubuntu Linux、macOS 和其他类似 Unix 的系统。
目标:运行 Bazel 来构建自定义 Bazel 二进制文件
(bazel-bin\src\bazel-dev.exe
)。
说明:
启动命令提示符(“开始”菜单 >“运行”>“cmd.exe”)
cd
到提取(或克隆)Bazel 来源的目录中。例如,如果您提取了主目录下的源代码,请运行以下命令:
cd %USERPROFILE%\bazel-src
从源代码构建 Bazel:
bazel build //src:bazel-dev.exe
或者,您也可以运行
bazel build //src:bazel.exe --compilation_mode=opt
来生成较小的二进制文件,但构建速度会变慢。您可以使用
--stamp --embed_label=X.Y.Z
标志进行构建以嵌入 Bazel 版本,以便bazel --version
输出给定版本。输出将位于
bazel-bin\src\bazel-dev.exe
(或bazel-bin\src\bazel.exe
)。
第 5 步:安装构建的二进制文件
抱歉,无需安装任何内容。
上一步的输出是一个独立的 Bazel 二进制文件。您可以复制 并将其保存到任何目录,并立即使用。(如果目录位于 您的 PATH,这样您便可以运行“bazel”everywhere.)
从头开始构建 Bazel(引导)
您还可以从头开始构建 Bazel,无需使用现有的 Bazel 二进制文件。
第 1 步:下载 Bazel 的源代码(分发归档)
(此步骤适用于所有平台。)
下载
bazel-<version>-dist.zip
,下载位置: GitHub,例如bazel-0.28.1-dist.zip
。注意:
- 它有一个独立于架构的分发归档。 没有特定于架构或操作系统的分发归档。
- 这些源代码与 GitHub 源代码树不同。您 必须使用分发归档来引导 Bazel。您不能 使用从 GitHub 克隆的源代码树。(发行归档包含 生成的源代码文件,它们不属于引导加载程序的组成部分, 普通 Git 源代码树的代码库。)
将分发归档解压缩到磁盘上的某个位置。
您应该验证由 Bazel 的 发布密钥 3D5919B448457EE0。
第 2a 步:在 Ubuntu Linux、macOS 和其他类似 Unix 的系统上启动 Bazel
有关 Windows 的说明,请参阅在 Windows 上引导 Bazel。
2.1. 安装必备项
Bash
zip、unzip
C++ build 工具链
JDK -需要版本 21。
Python。支持版本 2 和 3,安装其中一个版本 就足够了
例如,在 Ubuntu Linux 上,您可以使用 以下命令:
sudo apt-get install build-essential openjdk-21-jdk python zip unzip
2.2. 在 Unix 上引导 Bazel
打开 shell 或终端窗口。
cd
到解压缩分发归档的目录。运行编译脚本:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" bash ./compile.sh
。
将编译的输出置于 output/bazel
中。这是一个独立的
不含嵌入式 JDK 的 Bazel 二进制文件。您可以将其复制到任何位置或直接使用
问题。为方便起见,请将此二进制文件复制到
PATH
(例如 Linux 上的 /usr/local/bin
)。
如需以可重现的方式构建 bazel
二进制文件,还要设置
SOURCE_DATE_EPOCH
点击“运行编译脚本”操作。
第 2b 步:在 Windows 上引导 Bazel
有关类 Unix 系统的说明,请参阅 在 Ubuntu Linux、macOS 和其他类似 Unix 的系统上引导 Bazel。
2.1. 安装必备项
用于 zip 和解压缩的 MSYS2 软件包。在 MSYS2 shell 中运行以下命令:
pacman -S zip unzip patch
Visual C++ 编译器。将 Visual C++ 编译器作为一部分安装 Visual Studio 2015 或更高版本,或者安装最新的 Build Tools Visual Studio 2017。
JDK -需要版本 21。
Python。支持版本 2 和 3,安装其中一个版本 就足够了您需要 Windows 原生版本(可从 https://www.python.org).安装的版本 MSYS2 中的 Pacman 无法正常使用。
2.2. 在 Windows 上引导 Bazel
打开 MSYS2 shell。
设置以下环境变量:
BAZEL_VS
或BAZEL_VC
(两者不相同):设置为 Visual Studio 目录 (BAZEL_VS) 或 Visual Studio 可视化文件 C++ 目录 (BAZEL_VC)。设置其中一个就足够了。BAZEL_SH
:MSYS2bash.exe
的路径。请参阅 示例如下。请勿将其设为
C:\Windows\System32\bash.exe
。(您可以使用 (如果安装了适用于 Linux 的 Windows 子系统)。Bazel 不支持 此版本的bash.exe
。PATH
:添加 Python 目录。JAVA_HOME
:设置为 JDK 目录。
示例(使用 BAZEL_VS):
export BAZEL_VS="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk-21"
或者(使用 BAZEL_VC):
export BAZEL_VC="C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC" export BAZEL_SH="$(cygpath -m $(realpath $(which bash)))" export PATH="/c/python27:$PATH" export JAVA_HOME="C:/Program Files/Java/jdk-21"
cd
到解压缩分发归档的目录。运行编译脚本:
env EXTRA_BAZEL_ARGS="--tool_java_runtime_version=local_jdk" ./compile.sh
将编译的输出置于 output/bazel.exe
中。这是一个独立的
不含嵌入式 JDK 的 Bazel 二进制文件。您可以将其复制到任何位置或直接使用
问题。为方便起见,请将此二进制文件复制到
您的PATH
。
如需以可重现的方式构建 bazel.exe
二进制文件,还要设置
SOURCE_DATE_EPOCH
点击“运行编译脚本”操作。
您无需从 MSYS2 shell 运行 Bazel。你可以从控制台运行 Bazel
命令提示符 (cmd.exe
) 或 PowerShell。