某些平台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路径中编译代码即可;

 

posted on 2023-05-04 15:37  沉默的思想  阅读(200)  评论(0编辑  收藏  举报