经常编译系统,又免不了搭建各种开发环境,所以为了不对开发主机的环境有影响,使用Docker容器编译代码是比较方便和省心的方式。
编译OK3568的源代码,需要用Ubunut 18.04版本,我的开发机是Debian系统,所以制作了Docker的系统镜像,导入后就能直接使用了
https://tmp.link/f/6530849d96f5e
导入Docker镜像
docker load < rksdkbuilder-v1.1.tar
可以使用docker image命令查看,镜像是否存在
docker images | grep rksdkbuilder
rksdkbuilder v1.1 e2fbcddfdb3c 12 months ago 1.93GB
启动Docker容器
这里写了个shell脚本,第一次使用时可以直接执行,创建容器后,只要容器存在就不用再次执行了。
#!/bin/sh
WORKSPACE="/home/i2som/workspace2/OK3568-linux-4.19.206r3/OK3568-linux-source"
CONTAINER_NAME="ok3568-linux419-206r3"
IMAGE="rksdkbuilder:v1.1"
USER=$(whoami)
echo "the user name $USER"
docker run -it -d --restart=always -v $WORKSPACE:/home/$USER/ok3568-linux \
--volume="/etc/localtime:/etc/localtime:ro" --network host --privileged \
--env=HOST_UID=$(id -u) --env=HOST_GID=$(id -g) --env=USER=${USER} \
--name=${CONTAINER_NAME} $IMAGE
这里有两个地方需要注意
- 容器使用了跟当前host主机一样的用户名,进入后需要切换用户名
- 映射的目录为普通用户下的ok3568-linux目录
执行上面的脚本后后并不会直接进入容器,所以每次需要进入容器,执行下面命令
docker exec -it ok3568-linux419-206r3 /bin/bash
su i2som
编译过程
cd ~/ok3568-linux
./build.sh
我使用的开发机是6核12线程,内存32GB,编译时基本上cpu核心全部跑满,编译速度也比较快。
因为是把本地的源代码目录映射上去的,所以编译后,在host这边可以看到rockdev下的结果文件,也比较方便。
|