编译构建
OpenHarmony Docker编译问题
OpenHarmony基于gn和ninja的编译构建框架,实现:
平台::
开发板和内核的组合,不同平台支持的子系统和组件不同
子系统::
1、分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。
2、系统功能 : “系统 > 子系统 > 组件” 逐级展开
说明:
(1)可以实际需求裁剪某些非必要的子系统或组件。
(2)子系统是一个逻辑概念,它具体由对应的组件构成
组件::
系统的进一步拆分
可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;
能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。
理解:子系统是逻辑概念,可以理解为系统>组件,组件是编译的基本单位,可独立编译
gn::
Generate ninja的缩写,用于产生ninja文件。
ninja::
ninja是一个专注于速度的小型构建系统。
OpenHarmony侧的编译构建流程主要包括编译命令行解析,调用gn,执行ninja:
获取Docker镜像:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5
出现链接问题:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=swr.cn-south-1.myhuaweicloud.com%2Fopenharmony-docker%2Fopenharmony-docker-standard&tag=0.0.5": dial unix /var/run/docker.sock: connect: permission denied
原因:
在用户权限下,docker 命令需要 sudo ,否则出现以下问题。
解决:
命令之前添加sudo。
docker run -v 参数含义
格式:
-v 本地目录:容器目录 或 -v 容器目录
示例:
sudo docker run -it -v $PWD(本地目录):/python(容器目录) python /bin/bash
将本机的当前目录,挂载到镜像中的/python目录
sudo docker run -it -v /home/project(本地目录):/docker(容器目录) ubuntu:14.04 /bin/bash
将本机的//home/project,挂载到镜像中的/docker目录中。
docker,容器,可以理解为一个独立运行的系统,-v 就是将本地文件夹($PWD:当前所在目录)挂载到镜像中的目录,实现联通,在本地修改文件,和在镜像中是一样的。