macOS Sonoma 14.2.1下Bazel编译absl/base/log_severity.cc失败求助
问题:Sonoma系统升级后Bazel构建失败,报错
clang: error: unknown argument: '-fno-canonical-system-headers' 环境信息
- 系统:
Darwin estatead-mlt 23.2.0 Darwin Kernel Version 23.2.0: Wed Nov 15 21:54:10 PST 2023; root:xnu-10002.61.3~2/RELEASE_X86_64 x86_64 - Clang版本:
Apple clang version 15.0.0 (clang-1500.3.9.4) Target: x86_64-apple-darwin23.2.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
- Xcode工具版本:
xcode-select version 2405、xcrun version 68 - Bazel版本:
bazel 6.3.2
构建命令及报错详情
执行构建命令:
./bazel build //src/secrets/...
核心报错:
clang: error: unknown argument: '-fno-canonical-system-headers'
解决方法
1. 升级Bazel到兼容版本
Bazel 6.4.0及后续版本已修复Sonoma系统与Apple Clang 15的参数兼容问题,直接升级即可:
# Homebrew用户执行 brew upgrade bazel # 手动安装用户可下载对应版本替换 wget https://github.com/bazelbuild/bazel/releases/download/6.4.0/bazel-6.4.0-darwin-x86_64 chmod +x bazel-6.4.0-darwin-x86_64 sudo mv bazel-6.4.0-darwin-x86_64 /usr/local/bin/bazel
2. 修改Bazel配置屏蔽无效参数
若暂时无法升级Bazel,在项目根目录的.bazelrc中添加以下配置,让Clang忽略未知参数错误:
build --copt=-Wno-error=unknown-argument build --host_copt=-Wno-error=unknown-argument build --copt=-Qunused-arguments build --host_copt=-Qunused-arguments
或精准包装参数为Clang可识别格式:
build --copt=-Xclang -fno-canonical-system-headers build --host_copt=-Xclang -fno-canonical-system-headers
3. 重置Xcode命令行工具配置
确保Xcode工具路径正确且授权完整:
sudo xcode-select --reset sudo xcodebuild -license accept
验证
重新执行构建命令,确认错误消失:
./bazel build //src/secrets/...
内容的提问来源于stack exchange,提问作者AhmFM
相关产品推荐
相关产品推荐

