Bazel构建Drake_last_sha_with_original_matlab版本Atlas出现编译错误
问题根因
报错核心是Bazel版本与该Drake历史版本不兼容:
last_sha_with_original_matlab是Drake的早期历史版本,仅适配3.x系列Bazel。Bazel 4.0及以上版本移除了attr.label的single_file参数,替换为allow_single_file,直接触发了代码语法错误。- 开头的rc文件警告是因为高版本Bazel不再读取非标准命名的
bazel.rc配置文件,仅识别.bazelrc后缀的配置。
解决步骤
- 卸载当前系统安装的高版本Bazel
如果是apt安装的执行:sudo apt remove -y bazel
如果是手动二进制安装的,直接删除对应的Bazel可执行文件即可。 - 安装适配的Bazel 3.7.2版本(该版本是该Drake版本官方验证的兼容版本)
下载对应版本的Linux x86_64安装脚本后,执行:
安装完成后执行chmod +x bazel-3.7.2-installer-linux-x86_64.sh sudo ./bazel-3.7.2-installer-linux-x86_64.shbazel --version,确认输出为bazel 3.7.2即可。 - 处理rc文件警告
进入Drake项目根目录(包含WORKSPACE文件的目录),执行命令导入旧配置:echo "import tools/bazel.rc" > .bazelrc - 正确执行构建命令
你之前的执行路径在examples/Atlas子目录下,构建:install需要切换到项目根目录:cd ~/git/drake2/drake-last_sha_with_original_matlab/drake bazel build :install
可选临时方案(不推荐)
如果暂时不想降级Bazel,可以直接修改报错的tools/third_party/kythe/tools/build_rules/config/pkg_config.bzl文件,将所有single_file = True参数替换为allow_single_file = True即可解决当前报错,但后续可能触发其他版本兼容问题,优先选择降级Bazel的方案。
内容的提问来源于stack exchange,提问作者Dmitriy Ogureckiy
相关产品推荐
相关产品推荐

