某些平台SDK是基于特定版本的Unix系统开发的,依赖于版本的系统依赖库,版本往往和当前编译服务器的系统版本不一样。日前拿到一款SOC的SDK,要求编译服务器系统是Ubuntu18.04Lts版本。
看了下当前服务器的系统版本比较老,直接安装SDK的话需要更新的依赖库太多了,所以打算通过docker虚拟器的方式制作系统镜像,通过挂载本地路径的方式交叉编译开发。简单记录下操作步骤:
一、硬件环境
1、联网的Ubuntu系统机器A;(联网方便安装各种软件)
2、编译服务器机器B;(用于最终软件开发)
二、安装docker
1、docker安装方法参考:https://blog.csdn.net/sjy072411/article/details/125025159
2、docker安装后需要配置国内的镜像加速器,这边使用阿里的: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
三、在机器A上,制作ubuntu18.04系统镜像
1、拉取标准镜像:docker pull ubuntu:18.04
2、安装编译器(根据不用SOC安装)
3、安装其他所需的软件(git/vim等等)
4、保存为新镜像;pull下来的ubuntu:18.04是最简版本,通过2、3步安装了我们所需的软件,通过commit提交为新镜像,后续直接加载该镜像就可以使用软件。
docker commit -m "xxxxxxx" -p CONTAINER_ID(docker ps得到) ubuntu_new:18.04(新镜像名称:TAG)
参考:https://blog.csdn.net/weixin_47556601/article/details/123336815
https://blog.csdn.net/weixin_35419195/article/details/113580701
查看新镜像:docker images
5、第4步提交的新镜像可以A机器上直接加载运行,为了在机器B上能运行新镜像。我们需要保存新镜像到本地:
docker save ubunut_new:18.04 > ./ubuntu.tar
ubuntu.tar就是制作好的新镜像。
四、在机器B上加载制作好的新镜像
1、将2.5制作好的ubuntu.tar拷贝到机器B,运行:docker load < ./ubuntu.tar
2、docker images //查看镜像是否被成功载入
3、创建容器,运行新镜像:docker run -d -P --name ubuntu18_04 -v /home/share:/mnt/ -it ubunut_new:18.04 /bin/bash
/home/shar是机器B的本地路径,/mnt是docker运行镜像系统的挂载路径
4、连接到:docker attach ubuntu18_04
五、开发
1、机器B的/home/share路径为共享路径,将SDK相关代码放到改目录;
2、修改代码后,在docker中的/mnt路径中编译代码即可;