最近在地平线的SDK X3上做开发,有高手做了一些编译方法的对比:
[X3容器应用开发探索-0]开篇:从裸机编译到交叉编译
X86 Qemu for Hobot X3 PI(AARCH64) vs Hobot X3 PI
这里想借助Docker编译提速,做个笔记:
docker安装(可指定版本)
运行下面命令,查看可安装版本
目前可以看到最新版是,地平线建议版本是19.03。
查看Docker版本:
Ubuntu还需要设置权限(不然每次运行docker命令前面都加上sudo)
以地平线针对X3的镜像为例。 有两种:
-
RDK X3的系统镜像: aarch64架构的,板子上用的就是这个了。
-
地平线的Docker镜像:x86架构的,编译完不能直接放到X3上用。 这个镜像的目的是使用的地平线提供的深度网络模型部署工具链hb_mapper,该工具链不支持arm。因此建议选GPU Docker:
针对RDK X3的系统镜像,直接烧地平线Docker镜像的跳过2.1
没有找到直接将*.iso系统文件转为Docker镜像的,还是得先把RDK X3的系统镜像烧录到板子里,然后在板子上:
打包系统
将压缩好的系统文件x3_arm64.tar拷贝到装有Docker的PC上去。
ref:
将Linux的系统制作成Docker镜像
Ubuntu将实体机镜像转为docker镜像
载入刚才IOS转的镜像:
或者 地平线提供的docker镜像:
查看系统目前拥有的镜像
打开测试下:
针对地平线提供的docker镜像 --docker_openexplorer_ubuntu_20_xj3_gpu_v2.6.2b.tar.gz
修改 ~/.bashrc, 选择9.3.0 版本的 aarch64-linux-gnu-gcc
是的,前面两种方法都无法满足我的需求,这是第三种方法了…
Docker默认拉取的是amd的,需要先修改 docker的配置文件,在服务器上开启 dockerd 的实验属性:
为配置文件 /etc/docker/daemon.json,添加 “experimental”: true。
修改后的配置文件看起来和下面的比较像:
修改完成后,使用以下命令重置服务:
另外因为是异构架构,需要装QEMU模拟器:
现在拉取镜像
以下内容可参考第三部分用vscode完成
好了,现在我们开始从零开始装库:
你可能发现好像少了点什么? 是的,我们已经默认在root,再也用不着sudo了! 你要是不习惯可自行搜索怎么创建用户,然后避免你一开始就有root权限。
装opencv
看下版本
ref:
如何使用 docker pull 拉取特定架构amd64、arm64、aarch64的容器镜像
docker image ubuntu 20.04 arm64
exec user process caused: exec format error
Ubuntu下查看自己安装的opencv版本号和路径以及使用cmake链接自己路径下的指定opencv版本
ubuntu 安装opencv踩坑记录
在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)
重要!!!
安装完成后一定记得保存,不然下次打开你还得重装一遍!
先查看正在运行的容器
ref:
Docker 如何保存对容器/镜像的修改
查看镜像id
比如删除刚才ISO镜像转的
ref:
“image is being used by stopped container” error
装好Docker插件后,可以看到本地镜像:
看不到可能是权限不够,要先
本地文件传到docker里直接拖拽即可;
查看正在运行的容器ID:
ref:
VsCode在Docker中进行开发
VS Code 连接访问本地主机上的Docker容器
通过VScode往docker镜像中传入和下载文件
docker 从容器里拷贝文件
现在你又会发现,Docker的编译速度好慢! 并没有比开发板快多少,甚至还能更慢!
如何加速 Docker Build 构建过程