搭建鸿蒙编译环境(VMware+Linux)

2021-01-29 07:22:01 浏览数 (1)

系统定义

  1. HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
  2. 对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,形成一个“超级虚拟终端”,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
  3. 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。 对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。

技术特性硬件互助,资源共享分布式软总线

分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线示意图见。

一次开发,多端部署

HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。一次开发、多端部署示意图见图

技术架构

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如图

安装VM linux VMware Tools

我在自己的另一篇文章中详细讲解了怎么安装VM Linux。

下载安装包

  1. VM虚拟机
  2. linux

安装VM

  1. 解压
  1. 以管理员身份运行
  1. 不断下一步
  1. 取消这两个勾选
  1. 继续下一步
  1. 安装结束后,点击 许可证
  1. 填入注册码 CG54H-D8D0H-H8DHY-C6X7X-N2KG6 AA702-81D8N-0817Y-75PQT-Q70A4

YC592-8VF55-M81AZ-FWW5T-WVRV0

FC78K-FKED6-H88LZ-0QPEE-QP8X6

UV1H2-AKWD2-H8EJZ-GGMEE-PCATD

AC310-0VG0P-M88CQ-YWY5Z-QPRG0

CG54H-D8D0H-H8DHY-C6X7X-N2KG6

ZC3WK-AFXEK-488JP-A7MQX-XL8YF

AC5XK-0ZD4H-088HP-9NQZV-ZG2R4

ZC5XK-A6E0M-080XQ-04ZZG-YF08D

ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8

  1. 完成

安装Linux系统ubuntu

  1. 在桌面找到【VMware Workstation Pro】,双击打开。
  2. 点击【创建新的虚拟机】。
  1. 选择【典型】,点击【下一步】。
  1. 选择【稍后安装操作系统】,点击【下一步】。
  1. 选择【稍后安装操作系统】,点击【下一步】。
  1. 选择【Linux】,版本选择【ubuntu 64位】,点击【下一步】。
  1. 虚拟机名称输入【ubuntu 64位】,点击【浏览】更改系统的安装位置,建议安装在除C盘之外的磁盘,可在F盘或其他磁盘新建【ubuntu】文件夹,点击【下一步】。
  1. 点击【下一步】。
  1. 点击【自定义硬件】。
  1. 点击【内存】,设置为【2048MB】。
  1. 选择【新CD/DVD(SATA)】后选择【使用ISO镜像文件】,点击【浏览】找到并选择解压后【ubuntu】文件夹里面的【ubuntu-20.04.1-desktop-amd64】这个镜像。
  1. 点击【网络适配器】,网络连接选择【仅主机模式】。
  1. 选中【USB控制器】,点击【移除】。
  1. 选中【打印机】,点击【移除】然后点击【关闭】
  1. 点击【完成】。’
  1. 选中【ubuntu 64位】,点击【开启此虚拟机】之后不要有任何操作等待下一步的出现。
  1. 选择【中文(简体)】,点击【安装Ubuntu】。
  1. 点击【继续】。

19. 这里默认就好(默认的是Shanghai)点击【继续】。

20. 创建用户账号,点击【继续】。

21. 安装中。

22. 安装完成,点击【现在重启】。

23. 点击键盘上的回车【Enter】键。 24. 重启后不要有任何操作。 25. 点击【用户名】。 26. 输入密码,点击【登录】。

27. 安装完成

下载安装VMware Tools

VMware Tools的功能主要有两点:

1、可以在本机和虚拟机之间拖拽文件 2、是虚拟机的屏幕充满VMware Workstations的窗口

步骤

这里以Ubuntu 16.04为例,其他的步骤都大致相同

  1. 选择“虚拟机”->“安装VMware Tools”
  1. 等一会儿之后,在桌面或者文件里就会出现一个VMware Tools的磁盘驱动,打开终端把压缩文件解压到某个路径
  1. 解压完之后,进解压路径,就会看VMware Tools的安装包(上图安装包左边的文件夹)
  2. 进入安装包,打开终端,执行安装程序

开始安装之后见到yes,就输入yes。其他的就一路回车按(Enter)直到出现“Enjoy, –the VMware team”如下图,就表示安装成功了,然后手动重启虚拟机,虚拟机的屏幕充满VMware Workstations的窗口。

  1. 若是手动重启虚拟机之后,虚拟机的屏幕没有充满VMware Workstations的窗口,也可以手动设置

也可以在本机和虚拟机之间直接拖拽文件了

  1. 最后,解压的VMware Tools的安装文件不想要的话,可以删除,不会影响正常的使用

构建编译环境

将Linux shell改为bash

查看shell是否为bash,在终端运行如下命令

代码语言:javascript复制
ls -l /bin/sh
1

如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:

方法一:在终端运行如下命令,然后选择 no。

代码语言:javascript复制
sudo dpkg-reconfigure dash
1

方法二:先删除sh,再创建软链接。

代码语言:javascript复制
sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
12

确定Python安装好后,运行如下命令,将python路径链接到"/usr/bin/python"。

代码语言:javascript复制
which python3.8
cd /usr/bin && sudo rm python && sudo ln -s /usr/local/bin/python3.8 python && python --version
12

安装并升级Python包管理工具(pip3),任选如下一种方式。

命令行方式:

代码语言:javascript复制
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
12

安装包方式:

代码语言:javascript复制
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
12

运行如下命令,安装python模块setuptools。

代码语言:javascript复制
pip3 install setuptools
1

安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0 版本,任选如下一种方式。

命令行方式:

代码语言:javascript复制
sudo pip3 install kconfiglib
1

安装包方式: 下载.whl文件(例如:kconfiglib-13.2.0-py2.py3-none-any.whl)。 下载路径:“https://pypi.org/project/kconfiglib#files”

运行如下命令,安装.whl文件。

代码语言:javascript复制
sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
1

安装pycryptodome,任选如下一种方式。

安装升级文件签名依赖的Python组件包,包括:pycryptodome、six、ecdsa。安装ecdsa依赖six,请先安装six,再安装ecdsa。 命令行方式:

代码语言:javascript复制
sudo pip3 install pycryptodome
1

安装包方式: 下载.whl文件(例如:pycryptodome-3.7.3-cp37-cp37m-manylinux1_x86_64.whl)。 下载路径:“https://pypi.org/project/pycryptodome/#files”。

运行如下命令,安装.whl文件。

代码语言:javascript复制
sudo pip3 install pycryptodome-3.7.3-cp37-cp37m-manylinux1_x86_64.whl
1

安装ecdsa,任选如下一种方式。

命令行方式:

代码语言:javascript复制
sudo pip3 install ecdsa
1

安装包方式: 下载.whl文件(例如:ecdsa-0.14.1-py2.py3-none-any.whl)。 下载路径:“https://pypi.org/project/ecdsa/#files”

运行如下命令,安装.whl文件。

代码语言:javascript复制
sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
1

安装Scons

打开Linux编译服务器终端。 运行如下命令,安装SCons安装包。

代码语言:javascript复制
sudo apt-get install scons -y
1

如果软件源中无法找到安装包,请按以下步骤处理:

下载源码包(下载路径:“ https://scons.org/pages/download.html ”,推荐SCons版本是3.0.4 )。 解压源码包到任意目录。 安装源码包:进入解压目录,运行如下命令:

代码语言:javascript复制
sudo python3 setup.py install
1

运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。

代码语言:javascript复制
scons -v
1

安装编译工具环境

须知

如果后续通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gn、ninja、gcc_riscv32编译工具。

(推荐)如果后续通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gn、ninja、gcc_riscv32编译工具。 安装gn、ninja、gcc_riscv32编译工具时,请确保编译工具的环境变量路径唯一。

官方流程

安装gn

官网 打开Linux编译服务器终端。 下载gn工具。 解压gn安装包至~/gn路径下。

代码语言:javascript复制
tar -xvf gn.1523.tar -C ~/
1

设置环境变量。

代码语言:javascript复制
vim ~/.bashrc
1

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

代码语言:javascript复制
export PATH=~/gn:$PATH
1

生效环境变量。

代码语言:javascript复制
source ~/.bashrc
1

安装ninja

打开Linux编译服务器终端。 下载ninja工具。 解压ninja安装包至~/ninja路径下。

代码语言:javascript复制
tar -xvf ninja.1.9.0.tar -C ~/
1

设置环境变量。

代码语言:javascript复制
vim ~/.bashrc
1

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

代码语言:javascript复制
export PATH=~/ninja:$PATH
1

生效环境变量。

代码语言:javascript复制
source ~/.bashrc
1

安装gcc_riscv32(WLAN模组类编译工具链)

须知 Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,会导致商业分发时被GPL V3污染。

打开Linux编译服务器终端。 下载gcc_riscv32工具。 解压gcc_riscv32安装包至~/gcc_riscv32路径下。

代码语言:javascript复制
`tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~`/
1

设置环境变量

代码语言:javascript复制
vim ~/.bashrc
1

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

代码语言:javascript复制
export PATH=~/gcc_riscv32/bin:$PATH
1

生效环境变量。

代码语言:javascript复制
source ~/.bashrc
1

Shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。

代码语言:javascript复制
riscv32-unknown-elf-gcc -v
1

整合

集体解压

配置环境变量

打开设置环境变量

代码语言:javascript复制
vim ~/.bashrc
1

在最下面添加这几行

代码语言:javascript复制
export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH
123

保存

代码语言:javascript复制
source ~/.bashrc
1

现在可以查看这些环境变量

代码语言:javascript复制
echo $PATH

12

编译鸿蒙源码

获取鸿蒙源码

开发者需要在Linux服务器上下载一套源代码,获取源码(下载链接)。更多源码获取方式,请见源码获取。

解压

在Linux终端中输入

代码语言:javascript复制
tar -xzvf code-1.0.tar.gz
1

编译

在终端上输入

代码语言:javascript复制
python build.py wifiiot
1

DevEco编译

使用HarmonyOS IDE工具DevEco的终端工具连接Linux服务器。(HarmonyOS IDE工具DevEco集成了终端工具的能力,基本使用请参考指导文档) 依次点击“View”、“Terminal”,打开IDE终端工具。

在终端界面使用ssh命令连接linux服务器,如“ssh user@ipaddr”。

进入源码目录下,运行程序 输入 python build.py wifiiot

构建成功后,会在./out/wifiiot/路径中生成以下文件,至此编译构建流程结束。

出现的问题

出现这种问题的原因往往是python的软连接的问题 我的解决方法: 进入环境变量,删除错误的python环境配置,保存退出 然后 which python3 出现

代码语言:javascript复制
 /usr/bin/python
1

输入 python -v 出现 python 3.8.5 之后就可以运行成功了 本质就是把bin里面的python换成3.8的软连接

0 人点赞