Windows下msys64中Bazel命令未找到及编译报错求助
先来看你遇到的核心报错:
./compile.sh Building Bazel from scratch
ERROR: Must specify PROTOC if not bootstrapping from the distribution artifactNOTE: This failure is likely occuring if you are trying to bootstrap bazel from a developer checkout. Those checkouts do not include the generated output of the protoc compiler (as we prefer not to version generated files) . To build a developer version of bazel, do bazel build //src:bazel
To bootstrap your first bazel binary, please download a dist archive from our release page...
再结合-bash: bazel: command not found的问题,这两个是关联的,下面给你一步步的解决方法:
1. 先确认你下载的是正确的归档文件
你大概率下载的是Bazel源码仓库的源码包,而不是官方提供的发行版dist归档。源码仓库里没有预生成的protoc编译输出,所以compile.sh会要求你指定PROTOC;而dist归档已经包含了这些预生成文件,直接就能用compile.sh编译。
你需要重新下载对应版本的dist后缀归档(比如bazel-0.24.1-dist.zip),而非源码仓库的普通zip/tar.gz包。
2. 正确执行compile.sh编译第一个Bazel二进制
- 把下载好的dist归档解压到msys64的某个目录下,比如
~/bazel-0.24.1-dist - 进入解压后的目录:
cd ~/bazel-0.24.1-dist - 直接运行
compile.sh:
这时候因为dist归档包含了必要的预生成文件,不会再出现PROTOC相关的报错,编译完成后会在./compile.shoutput/目录下生成bazel.exe。
3. 解决bazel: command not found的问题
编译完成后,你需要把生成的bazel.exe放到msys64能识别的PATH路径里:
- 最简单的方式是直接复制到
/usr/local/bin目录下(这个目录默认在PATH里):cp output/bazel.exe /usr/local/bin/ - 或者把
output/目录添加到PATH中,编辑~/.bashrc文件,加入一行:
然后执行export PATH=$PATH:/path/to/your/bazel-dist/outputsource ~/.bashrc让配置生效。
4. 后续编译操作
当bazel命令能正常调用后,你再执行bazel build //src:bazel或者指定输出目录的命令就没问题了:
bazel --output_user_root=c:\tmp build //src:bazel.exe
内容的提问来源于stack exchange,提问作者wafa

