M1 Mac运行bazel run //:gazelle报错:找不到armabi_cc_toolchain_config.bzl
解决M1 Mac上Bazel运行
bazel run //:gazelle的工具链错误 核心原因
M1 Mac属于arm64(aarch64)架构,你的Bazel环境试图加载x86_64架构的CC工具链,同时缺少arm架构对应的工具链配置文件,导致工具链匹配失败。
修复步骤
1. 升级Bazel到支持arm64的稳定版本
旧版本Bazel对Apple Silicon的支持不完善,建议升级到5.0.0及以上的稳定版。通过Homebrew安装或升级:
# 未安装则执行 brew install bazel # 已安装则执行升级 brew upgrade bazel
2. 清理Bazel缓存,清除旧架构残留
缓存中的x86_64配置会干扰arm64环境,执行命令清空全部缓存:
bazel clean --expunge
3. 配置Bazel默认使用arm64工具链
在项目根目录或用户主目录的.bazelrc文件中添加以下配置,强制Bazel适配arm64架构:
build --cpu=darwin_arm64 build --host_cpu=darwin_arm64
如果没有.bazelrc文件,直接创建即可。
4. 确认Xcode命令行工具完整安装
M1 Mac上的CC工具链依赖Xcode命令行工具,执行以下命令安装或验证:
xcode-select --install
安装完成后检查工具路径是否正常:
which clang
正常输出应为/usr/bin/clang。
5. 重新运行Gazelle
完成以上步骤后,重新执行目标命令:
bazel run //:gazelle
额外说明
如果项目中存在硬编码的x86_64工具链配置,需要检查项目根目录的WORKSPACE或.bazelrc文件,移除指定darwin_x86_64的配置项,替换为架构无关配置或多架构兼容设置。
内容的提问来源于stack exchange,提问作者Homayoon
相关产品推荐
相关产品推荐

