鸿蒙源码下载并编译
第一章 下载源码并编译
1.1 在Ubuntu中安装开发环境
如果你是从头看文档,并且按照文档操作,那么你已经按照《5.2 安装Ubuntu软件》下载并运行了这个脚本:Configuring_ubuntu.sh。如果你是中途看文档,那么请按照《5.2 安装Ubuntu软件》操作一次。
这个脚本在鸿蒙发布之后又更新了,对于我们的老学员,也需要从新下载、执行它。
下面解析一下这个脚本。
首先,它会做一些检查,然后列出一个菜单供你选择:
在这个菜单里,你可以选择这三项之一:
其实第一项包含了第二项,无论你是开发鸿蒙还是Linux,都可选择第一项。
假设你选择了第一项,该脚本会执行下面的函数:
从上图中各个函数的名字就可以知道,它会做这些事情:设置Ubuntu软件源、安装通用的软件(比如GCC、manual手册)、安装Linux开发软件(比如NFS、SAMBA)、安装鸿蒙开发软件(比如llvm)。
1.2 下载、编译鸿蒙内核Liteos-a
本节要做的事情是:配置GIT、安装repo(repo是用来管理多个git仓库的)、下载源码、编译。
1.2.1 配置GIT
需要在ubuntu下执行如下命令来配置GIT客户端的用户信息,比如(下面命令的用户名、邮箱可以随便写):
git config --global user.name "100ask"
git config --global user.email "weidongshan@qq.com"
git config --global credential.helper store
1.2.2 安装repo
repo工具是用来管理多个GIT仓库的命令,执行如下命令来安装:
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > repo
sudo cp repo /usr/local/bin/repo && sudo chmod a+x /usr/local/bin/repo
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
1.2.3 下载源码
执行以下命令下载:
cd /home/book
mkdir openharmony
cd openharmony
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-1.0
repo sync -c -j8
注意:鸿蒙内核经常更新,我们讲课时必须锁定某个版本,作为鸿蒙先行者,我们目前使用最先出现的“OpenHarmony-1.0”。别被“1.0”误导了,它内核在GITEE里的分支版本,同属“鸿蒙2.0”。
同步完成后提示
1.2.4 编译官方版本
我们先为官方板子hi3518ev300编译Liteos-a,确保环境没有问题。后面再打上IMX6ULL的补丁,为IMX6ULL编译鸿蒙。 进入源码根 目录,执行以下命令:
cd /home/book/openharmony
python build.py ipcamera_hi3518ev300 -b debug
等待一会,结果如下:
我们不打算使用hi3518ev300,上述命令只是为了确定开发环境没问题。
并且rootfs.tar中有很多库,比如libfreetype.so,以后可以直接使用。
- 以太坊·代币开发详解
- JSON Web Token - 在Web应用间安全地传递信息
- TensorFlow强化学习入门(2)——基于策略的Agents
- 用ABAP 生成二维码 QR Code
- CDS view注解解析 - @Environment.systemField
- Document flow API in SAP CRM and C4C
- Python基础知识4:文件操作
- Python基础知识6:格式化字符、颜色
- 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
- 【开源】QuickPager ASP.NET2.0分页控件 v2.0.0.2版本。
- 【开源】我的分页控件正式命名为QuickPager ASP.NET2.0分页控件
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码 (二)
- 高级时钟约束
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码(一) 主体
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 点线图和阶梯图的画法
- 添加直线的两种方式
- nginx fastcgi模块ngx_http_fastcgi_module详细解析、使用手册、完整翻译
- Chrome代码调试指南
- Maven安装与配置
- CentOS7安装elk,并监控Nginx的access.log日志
- Aria2 + Rclone 实现离线下载 | 完美脚本配置 | 解决无法上传问题
- alpine使用的避坑指南
- elasticSearch学习(八)
- Python自学成才之路 魔术方法之比较运算符,赋值运算符
- Go语言(golang)新发布的1.13中的Error Wrapping深度分析
- 使用k8s容器钩子触发事件
- Python自学成才之路 魔术方法之属性访问控制
- Python自学成才之路 彻底搞懂python变量作用域
- Python自学成才之路 什么是元类