周末下载了 OpenHarmony OS 2.0 的源码,并 build 成功。虽然大部分的步骤都是来自官方文档,但还是碰到了一些问题,所以决定还是写下来,当作一个备忘录。

我平常使用的开发环境是 Ubuntu Linux 系统,但这次切换到了 Windows 系统,原因是鸿蒙的开发工具 DevEcoStudio 和烧写工具 HiTool 只有 Windows 版本和 Mac 版本。好在 Windows 10 对 Linux 的支持非常好,其中 WSL (Windows Subsystem for Linux) 可以像 Windows 应用程序那样安装与运行,比使用虚拟机高效。WSL 已经进化到第二代,简称为 WSL2。关于 WSL2 的安装与配置,请参考相关文档。

我从 Microsoft Store 安装的 Linux 发行版本为 Ubuntu 18.04 LTS 版本。

需要注意的是,WSL2 Linux 的系统镜像文件默认放置在 C 盘,如果 C 盘空间预留不是很足够的话,建议移动到其它空间比较足的盘上。具体方法如下:

  1. 首先找到 WSL2 Linux 的系统镜像文件位置,默认为 C:\Users<用户>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState ,将其中的 <用户> 替换为你的用户名。

  2. C:\Users<用户>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState 移动到其它盘,比如 D:\VirtualMachines\WSL2\Ubuntu18.04\LocalState

  3. 建立符号链接(类似 Linux 下的软链接)。

mklink /j C:\Users\chenz\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState D:\VirtualMachines\WSL2\Ubuntu18.04\LocalState

做好上述准备后,就不会担心 C 盘被撑爆了。

言归正传,下面就说说在 Ubuntu 18.04 LTS 下如何下载和编译 OpenHarmony OS 2.0 的源码。

安装依赖工具

安装命令如下:

sudo apt-get update
sudo apt-get install binutils git-core git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 python2.7 python-minimal

获取标准系统源码

官方文档给了三种获取系统源码的方式,如果是研究鸿蒙系统,最好直接从软件仓库下载,这样有比较完善的提交信息。所以这里只介绍如何从软件仓库克隆系统源码。

  1. 配置 git 用户信息

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
  1. 安装 repo 工具,可以执行如下命令。

$ curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
$ chmod a+x repo
$ sudo mv repo /usr/local/bin/repo
$ sudo apt install python3-pip
$ pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
  1. 获取标准系统源码

$ mkdir OpenHarmony
$ cd OpenHarmony$ repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify$ repo sync -c$ repo forall -c 'git lfs pull'

注意:repo sync 命令后面的 -c 参数表示只获取当前分支的源码,也就是说并不是所有分支的代码。我尝试不加这个 -c 参数,可能是 gitee 的配置问题,超过 1G 的软件仓库,比如 linux kernel 就出现如下错误,网上搜索了很多方法也未能解决。

error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

获取预编译工具

$ curl https://gitee.com/landwind/script-tools/raw/master/Shell/OpenHarmony/OpenHarmony_2.0_canary_prebuilts_download.sh >./prebuilts_download.sh
$ bash ./prebuilts_download.sh

配置NodeJS环境和获取Node_modules依赖包

  1. 下载Nodejs。

$ mkdir -p prebuilts/build-tools/common/nodejs
$ cd prebuilts/build-tools/common/nodejs
$ wget --no-check-certificate https://nodejs.org/download/release/v12.18.4/node-v12.18.4-linux-x64.tar.gz
$ tar -zxvf node-v12.18.4-linux-x64.tar.gz
$ cd -
  1. 下载node_modules包。

$ cd third_party/jsframework
$ export PATH=../../prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin:${PATH}
$ npm install
$ cd -
  1. 把下载的node_modules包放入OpenHarmony代码的prebuilts/build-tools/common/js-framework目录下。

$ mkdir -p prebuilts/build-tools/common/js-framework
$ cp -rp third_party/jsframework/node_modules prebuilts/build-tools/common/js-framework/

安装hc-gen工具

hc-gen用于进行驱动编译,具体安装步骤如下:

  1. 下载 hc-gen 工具。

    $ wget https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
    
  2. 解压 hc-gen 安装包到 ~/hc-gen 路径下。

    tar -xvf hc-gen-0.65-linux.tar -C ~/
    
  3. 设置环境变量。

    vim ~/.bashrc
    

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/hc-gen:$PATH
    
  4. 生效环境变量。

    source ~/.bashrc
    

编译系统

执行脚本 build.sh 即可,后面必须加上 --product-name Hi3516DV300 参数,目前只支持这一种产品形态的构建。

$ ./build.sh --product-name Hi3516DV300 --ccache

构建成功以后,输出如下:

手头还没有 Hi3516DV300 的板子,所以无法烧写体验鸿蒙系统。

非常意外的是,OpenHarmony OS 2.0 没有提供模拟器的 build 选择,这对开发者相当不友好。后面我会研究一下 QEMU 模拟器,看能否在 QEMU 上把 OpenHarmony OS 2.0 运行起来,敬请关注。

鸿蒙系统研究第一步:从源码构建系统镜像相关推荐

  1. RocketMQ学习第一步之源码构建

    这里写目录标题 绪论 源码构建 1.clone 2. 构建 3.配置 3.1配置namesrv 3.2新建文件夹 3.3 配置broker 3.4 配置producer 3.5 配置 consumer ...

  2. MoveIt 1 源码构建: Linux

    MoveIt 1 源码构建: Linux 从源代码安装MoveIt是向开源项目提供新特性.优化和bug修复的第一步. MoveIt主要在Linux上支持,特别是以下构建指令支持: Ubuntu 20. ...

  3. 用ADI官方源码构建任意Xilinx的ZYNQ平台下的ADI芯片控制程序(1)——硬件平台搭建篇

    用ADI官方源码构建任意Xilinx的ZYNQ平台下的ADI芯片控制程序(1)--硬件平台搭建篇. 用ADI官方源码构建任意Xilinx的ZYNQ平台下的ADI芯片控制程序(2)--软件程序调试篇. ...

  4. 鸿蒙轻内核M核源码分析:中断Hwi

    摘要:本文带领大家一起剖析了鸿蒙轻内核的中断模块的源代码,掌握中断相关的概念,中断初始化操作,中断创建.删除,开关中断操作等. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列五 中断Hwi&g ...

  5. 鸿蒙轻内核M核源码分析:数据结构之任务就绪队列

    摘要:本文会给读者介绍鸿蒙轻内核M核源码中重要的数据结构,任务基于优先级的就绪队列Priority Queue. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列三 数据结构-任务就绪队列> ...

  6. DL4J中文文档/开始/从源码构建

    在本地从主干构建 注意:大多数用户应该使用Maven Central上的快速入门指南,而不是从源代码构建. 除非你有一个非常好的从源码构建的理由(例如开发新的特性--不包括自定义层.自定义激活函数.自 ...

  7. Java 通用代码生成器光 2.3.0 文明 Beta10 版发布介绍视频,支持从源码构建

    Java 通用代码生成器光 2.3.0 文明 Beta10 版发布介绍视频,支持从源码构建 Java 通用代码生成器光 2.3.0 文明 Beta10 版发布最新介绍视频,详细介绍 java 通用代码 ...

  8. Java 通用代码生成器光 2.3.0 文明 Beta10 版,支持从源码构建

    Java 通用代码生成器光 2.3.0 文明 Beta10 版,支持从源码构建 Java 通用代码生成器光 2.3.0 文明已发布 Beta10 版,支持从源码构建代码生成器.您可以装好 JDK 和 ...

  9. vue源码解析(3)—— Vue.js 源码构建

    Vue.js 源码构建 Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下. 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.json ...

  10. Tomcat - 源码构建Tomcat 8.5.55 启动

    文章目录 官方地址 源码搭建分析 源码搭建步骤 (Maven管理) Step1. 新增maven管理文件 pom.xml Step2. 处理conf 和 webapps Step3. 导入IEDA 3 ...

最新文章

  1. linux系统下tar/gz/7z/xz/bz2/zip等各种格式的打包压缩解压
  2. DB 数据同步到数据仓库的架构与实践
  3. OpenCV中直方图对比
  4. Asp.net MVC 3实例学习之ExtShop(六)——登录对话框
  5. [Android Pro] app_process command in Android
  6. Spring Boot,Sprint Batch 学习
  7. 基于点云的视觉引导系统
  8. 编译安装nginx并修改版本头信息—参考实例
  9. 【Codecs系列】HEVC标准(三):大尺寸四叉树分割技术
  10. C#读取Excel文件(*.xls)|*.xls(2种方法)
  11. torch.nn.Module.named_buffers(prefix=‘‘, recurse=True)
  12. 水波纹特效怎么制作?这波水波纹特效拉动满满复古感
  13. 计算机网络应用基础心得体会,计算机网络技术学习心得体会
  14. 2021-08-07 解决安装MacTeX后界面显示法语问题
  15. 左侧菜单栏左滑收起展开效果
  16. 使用安全模式启动计算机,老司机教你电脑安全模式启动方法
  17. BCB(C++ Builder)创建动态库(DLL,接口导出和调用),动态加载DLL
  18. 2019年肖秀荣命题人讲真题上下两册【全】
  19. java人工智能之神经网络中的层数怎么确定
  20. vijos 1221 神秘配方 题解

热门文章

  1. 动环监控安装及调试过程,动环监控调试是什么
  2. ecshop2.7.3 支付宝alipay官方电脑手机H5新版支付接口支持异步回调
  3. R语言——符号函数(向量化)
  4. 阿里巴巴B2B电商算法首次对外公开
  5. keil5中输入中文并且美化字体
  6. c++滑动窗口leetcode3\567
  7. 计算机专业进银行和国家电网,银行春招与国家电网那个好?
  8. Linux编译simplest_ffmpeg_player
  9. Lae程序员小漫画(三),仅供一乐
  10. 计算机系统实验2:炸弹实验bomb