apollo使用docker编译aarch64版本

apollo使用docker编译aarch64版本

  • 1、准备
    • 1.1 拉取代码
    • 1.2 拉取镜像
    • 1.3 导入镜像
  • 2、编译
    • 2.1 编译cyber
  • 3、部署
    • 3.1 将相关文件上传到xavier
  • 4、运行
    • 4.1 准备
    • 4.2 运行
    • 链接

1、准备

1.1 拉取代码

建议:
从gitee中拉取apollo代码,github上拉取代码非常的慢

git clone https://gitee.com/ApolloAuto/apollo.git
git checkout v6.0.0

使用v6.0.0分支
为什么使用v6.0.0分支?我先前用v5.5.0里面的aarch64的docker是3年前更新的,自己测试过这个docker,无法正常编译。所以被我舍弃掉。v5.5.0中docker版本如下:

VERSION_X86_64="dev-18.04-x86_64-20191111_1530"
VERSION_AARCH64="dev-aarch64-20170927_1111"

1.2 拉取镜像

查看v6.0.0版本中镜像名如下:

VERSION_X86_64="dev-x86_64-18.04-20200914_0742"
VERSION_AARCH64="dev-aarch64-18.04-20200915_0106"

这个版本的镜像都是2020年做的,应该能够用,于是从Docker Hub中拉取相应版本。
在终端中输入以下指令进行拉取:

docker pull apolloauto/apollo:dev-x86_64-18.04-20200914_0742
docker pull apolloauto/apollo:dev-aarch64-18.04-20200915_0106

注意:
因为笔记本上面是x86架构,docker中是aarch架构。需要拉取另外一个镜像,否则无法启动aarch64的镜像。

docker pull multiarch/qemu-user-static:latest

1.3 导入镜像

  • 拷贝dev_start.sh dev_into.sh
    将dev_start.sh以及dev_into.sh拷贝一份分别命名为aarch_start.sh 以及 aarch_into.sh。
  • aarch_start.sh中指定加载aarch64版本镜像
# TARGET_ARCH=“$(uname -m)”
TARGET_ARCH=aarch64
  • aarch_start.sh屏蔽map以及其他镜像
    屏蔽dev_start.sh中挂载的map_volumes以及other_volumes,就不会去pull其他的镜像。
    # mount_map_volumes
    # mount_other_volumes
  • 启动镜像
    注意:
    在直接启动aarch64的镜像之前需要启动以下multiarch/qemu-user-static:latest镜像。
docker run --rm --privileged multiarch/qemu-user-static:latest --reset -p yes

再使用以下指令从本地启动上一步骤拉取的镜像。-l指令

./docker/scripts/dev_start.sh -l
  • 进入镜像
./docker/scripts/aarch_into.sh

镜像架构

2、编译

2.1 编译cyber

在终端中输入编译cyber指令

./apollo.sh build cyber

等待一段时间后即可以编译完成,如果遇到错误,可以试着将/apollo/.cache删除。再重新编译。因为可能是你在x86架构下面也进行了编译,导致出错。所以,我修改了以下dev_start.sh 和 dev_into.sh中。可以在启动时链接到不同的路径,不需要删除.cache重新编译。后面会有相关代码链接。

3、部署

3.1 将相关文件上传到xavier

具体如下:
apollo使用docker编译aarch64版本_第1张图片
注意:
找不到libPocoFoundation.so.71库。将libPocoFoundation.so建立一个软连接即可。

cd /usr/lib
sudo ln -svf libPocoFoundation.so libPocoFoundation.so.71

4、运行

4.1 准备

  • 拉取aarch64库
git clone https://gitee.com/mountain_xiu/apollo_aarch64_bin.git
  • 建立软连接
sudo ln -svf path_to_apollo_aarch64_bin /apollo
  • source环境变量
source /apollo/apollo.env

4.2 运行

  • 运行talker
cd apollo
./bazel-bin/cyber/examples/talker
  • cyber_monitor显示数据
    apollo使用docker编译aarch64版本_第2张图片

链接

apollo_aarch64_bin

你可能感兴趣的:(自动驾驶,docker,c++)