apollo_logo
2
0

安装及编译问题FAQ——编译相关

编译

开发者在编译时,可能会遇见下列错误:

问题一:buildtool运行后报错:

    1. Cannot find WORKSPACE
    2. Different packages in workspace have a same name
    3. Package xxx is not in xxx
    4. Can't find any package in workspace xxx

等错误

原因:buildtool需要在工作空间内运行,即容器内的/apollo_workspace,工作空间有一定的规范,aem会在执行start时将运行aem的路径挂载到容器的/apollo_workspace中,当aem在非apollo的工作空间外执行时,就可能导致以上错误

解决方法:开发者在教程中会下载一个application-pnc的文件夹,该文件夹即为apollo的工作空间,请在进入该文件夹后再执行以下命令:

与application-pnc该文件夹进行绑定

sudo apt update && sudo apt install --only-upgrade apollo-neo-env-manager-dev
cd pnc-competition && aem create

这个操作的原理是将您的文件夹挂载到容器中,这样我们的环境就可以访问和操作当前文件夹。在绑定之后,由于之前的环境已被清理,所以需要重新安装模块。进入 Docker 后,请按照以下链接中的步骤1.3.2以及之后的步骤进行操作:

https://apollo.baidu.com/community/article/1128

确保容器内的/apollo_workspace是有效的,并且

buildtool 需要在 /apollo_workspace 下执行!

buildtool 需要在 /apollo_workspace 下执行!

buildtool 需要在 /apollo_workspace 下执行!

重要的事情说三遍

问题二:buildtool调用bazel编译后,bazel报错:

原因:bazel提示Error downloading,说明bazel由于网络原因无法下载自身的依赖

解决方法:

  1. 这个可能是网络问题导致的,由于各地网络的复杂性,可以尝试切换手机热点来下载这些依赖
  2. 如果仍无法下载依赖,可以使用Apollo预下载好的外部依赖缓存:
aem enter # 该命令在宿主机执行,如果已在容器内,可以忽略这一步
cd /apollo_workspace
wget https://apollo-system.cdn.bcebos.com/bazel_deps/cache.tar.gz
rm -rf .cache
tar -xzvf cache.tar.gz

然后正常编译即可

问题三:编译过程中,bazel 提示 -luuid 的错误:

原因:这个错误是由于旧版本的镜像缺少uuid的依赖,导致连接器无法连接uuid的动态库,最终编译失败

解决方法:新版本的镜像已经修复了这个问题,可以在宿主机使用以下命令:

rm -rf modules # 删除工作空间里保存的源码
exit # 退出当前容器
aem start -f # 启动最新版本镜像的容器

来启动最新版本镜像的容器,然后重新下载需要的模块即可。

或者直接在该容器中安装缺失的uuid:

sudo apt install uuid-dev && sudo ldconfig

问题四:赛事编译缓存:

提前编译好的planning模块缓存可以显著减少编译时间。

aem enter # 该命令在宿主机执行,如果已在容器内,可以忽略这一步
cd /apollo_workspace/
wget https://apollo-system.cdn.bcebos.com/bazel_deps/cache.tar.gz
sudo rm -rf .cache
tar -xzvf cache.tar.gz

原创声明,本文由作者授权发布于Apollo开发者社区,未经许可,不得转载。
发表评论已发表 0 条评论
登录后可评论,请前往 登录
暂无评论~快去发表自己的独特见解吧!
目录
编译
问题一:buildtool运行后报错:
问题二:buildtool调用bazel编译后,bazel报错:
问题三:编译过程中,bazel 提示 -luuid 的错误:
问题四:赛事编译缓存: