OpenHarmony随笔记

冯奇思
2023-12-01

编译构建
OpenHarmony Docker编译问题

编译构建

OpenHarmony基于gn和ninja的编译构建框架,实现:

  • 构建不同芯片平台的产品
  • 根据产品配置可以按照组件组装打包产品需要的能力

相关基本概念:

平台::
开发板和内核的组合,不同平台支持的子系统和组件不同

子系统::
1、分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。
2、系统功能 : “系统 > 子系统 > 组件” 逐级展开

说明:
(1)可以实际需求裁剪某些非必要的子系统或组件。
(2)子系统是一个逻辑概念,它具体由对应的组件构成

组件::
系统的进一步拆分
可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;
能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。

理解:子系统是逻辑概念,可以理解为系统>组件,组件是编译的基本单位,可独立编译

gn::
Generate ninja的缩写,用于产生ninja文件。

ninja::
ninja是一个专注于速度的小型构建系统。

运行机制:

OpenHarmony侧的编译构建流程主要包括编译命令行解析,调用gn,执行ninja:

  • 命令行解析:解析待编译的产品名称,加载相关配置。
  • 调用gn: 根据命令行解析的产品名称和编译类型,配置编译工具链和- 全局的编译选项。
  • 执行ninja:启动编译并生成对应的产品版本。

OpenHarmony Docker编译

1

获取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。

2

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:当前所在目录)挂载到镜像中的目录,实现联通,在本地修改文件,和在镜像中是一样的。

 类似资料: