OpenHarmony开发者论坛

标题: OpenHarmony开发环境搭建 [打印本页]

作者: Laval社区小助手    时间: 2024-3-6 14:18
标题: OpenHarmony开发环境搭建
[md]# 1、环境搭建

编译OpenHarmony的源码建议在Ubuntu下进行,使用windows+ubuntu20.04的搭建。

VirtualBox官网下载地址:[https://www.virtualbox.org/](https://link.csdn.net/?target=ht ... 3Flogin%3Dfrom_csdn)

Ubuntu20.04官网下载地址:[https://ubuntu.com/download/desktop](https://link.csdn.net/?target=ht ... 3Flogin%3Dfrom_csdn)

关于VirtualBox和Ubuntu的安装就不详细的说明了,百度一下资料很多。

## **1.1、改sh为bash**

```
ls -l /bin/sh                   #如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:  
sudo dpkg-reconfigure dash      #然后选择no
```

![bash](https://devpress.csdnimg.cn/3db1261c4d7a46b58c8686a1506d8a78.png)

## 1.2、安装OpenHarmony依赖包

```
1. sudo apt-get update && sudo apt-get install binutils git 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 lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby openjdk-8-jdk python3-distutils dosfstools mtools

2. pip3 install setuptools kconfiglib


#安装编译hi3861需要的pip包
1. pip3 install scons ecdsa pycryptodome
2. pip3 install --upgrade --ignore-installed six

具体所需要的依赖包详细网址可以参考:https://repo.huaweicloud.com/har ... /Standard_System.md
```

## **1.3、安装python3.8和 pip**

编译OpenHarmony源码hi3861目标平台需要使用scons,默认安装的scons版本需要python版本>=3.7,一般推荐python版本3.8。

a、如果是ubuntu20.04,因为默认python是3.8,正好符合要求,只需要设置以下python的环境变量,建立一个软连接即可。

```
1. which python3.8                          #查看python3.8的安装位置
    输出:/usr/bin/python3.8                #比如我的安装目录
2. cd /usr/bin                              #进入python的目录
3. sudo rm python                           #删除python
4. sudo ln -s /usr/bin/python3.8 python     #将python链接到python3.8
5. python --version

OpenHarmony源码一般推荐的编译的环境是ubuntu18.04版本,主要原因是 Ubuntu20.04后,系统动态库版本更新更名。PyTorch 在引入时调用动态库找不到对应的库进而报错。解决方案是设置一个软连接,让系统在查找低版本动态库时,自动打开高版本动态库。操作如下。

首先输入下面命令查询当前动态库版本。根据找不到的动态库名自行更改。

1.   ls /lib/x86_64-linux-gnu/libtinfo.so.*
2.   /lib/x86_64-linux-gnu/libtinfo.so.6  /lib/x86_64-linux-gnu/libtinfo.so.6.2

可以看到我们 Ubuntu 20.04 的系统上只有 6 这个版本,而 python 在查找 5 当然找不到。我们设置一个 5 到 6 的软连接即可。

3.   sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5
4.   sudo apt-get install -y libncursesw5
```

注意:如果pip下载慢,配置pip包下载源,加速国内安装pip包:

```
1. mkdir~/.pip/
2. vim ~/.pip/pip.conf
#输入以下内容,改变默认下载的网址
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120
```

b、如果是其他版本,比如ubuntu18.04,默认Python3版本是 3.6,得先安装python3.8

```
sudo apt-get install python3.8 python3-pip  
```

安装完成后,需要将默认python切换为3.8,比较麻烦的是多个python版本的管理,一般推荐使用virtualenv管理,单独source相应的active脚本切换当前shell会话的默认python版本

virtualenv管理多个python运行环境,不适用virtualenv的情况下,pip install 和 sudo pip install的包会分别放到用户home目录和系统目录

安装virtualenv:

```
pip3 install virtualenv
sudo apt install python3-virtualenv

#创建使用python3.8为默认python解释器的virtualenv
mkdir ~/Harmony/venv && virtualenv -p python3.8 ~/Harmony/venv

#激活virtualenv,激活后的pip3 install会将包文件缓存到相应的子目录中
source ~/harmonyos/venv/bin/activate
source ~/Harmony/.venv/bin/activate
```

# **2、下载源码**

Ubuntu环境搭建完成之后开始在码云下载源代码(注册码云账号)。

## **2.1、配置GIT**

```
1. git config --global user.name "XXXXXXX"        #填写自己的用户名称
2. git config --global user.email "XXXXXX"        #填写自己的用邮箱
3. git config --global credential.helper store
4. git config –list  #查看git配置是否无误
```

## 2.2、生成/添加SSH公钥

Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。

你可以按如下命令来生成 sshkey:

```
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  
```

> 注意:这里的 `xxxxx@xxxxx.com` 只是生成的 ssh key 的名称,并不约束或要求具体命名为某个邮箱。 现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

按照提示完成三次回车,即可生成 ssh key。通过查看 `~/.ssh/id_rsa.pub` 文件内容,获取到你的 public key

```
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
```

![bash](https://devpress.csdnimg.cn/dbcee44a6c5d4a799aeba95052fb8eb1.png)

复制生成后的 ssh key,用之前创建的码云账号登录码云,通过个人主页主页 **「设置」->「安全设置」->「SSH公钥」** ,添加生成的 public key 添加到仓库中。 ![bash](https://devpress.csdnimg.cn/894efe86b2d54857b1a418b40787ea0b.png)

添加成功后,就可以使用SSH协议对仓库进行操作了。

## 2.3、安装码云repo工具

```
1. curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo    #如果没有权限,可以用 sudo -i 切换到root,安装完成后在切换回去
2. chmod a+x /usr/local/bin/repo        #设置repo文件 a+x就是全部用户可执行
3. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
```

**2.3、下载源码**

repo是下载多个git库的python脚本,参考repo用法:[https://blog.csdn.net/nwpushuai/article/details/78778602](https://link.csdn.net/?target=ht ... 3Flogin%3Dfrom_csdn)

**repo init**

-u #指定manifests这个远程git库的URL,manifests库是整个项目的清单,通常包含了default.xml这个文件

-b #指定manifest.xml文件中的一个版本,,也就是俗称的“分支”运行该命令后,会在当前目录下新建一个.repo子目录

**repo sync**

-j12 #开启多线程同步操作,这会加快sync命令的执行速度。默认情况下,使用4个线程并发进行sync

–no-repo-verify:在下载repo库时,会对repo的源码进行检查。通过–repo-url指定第三方repo库时,可能会导致检查不通过,所以可以配套使用该参数,强制不进行检查

-c, –current-branch:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间

-d, –detach:脱离当前的本地分支,切换到manifest.xml中设定的分支。在实际操作中,这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败

sync -c #只同步指定的远程分支

> ![icon-note.gif](https://gitee.com/openharmony/do ... urces/icon-note.gif) **说明:** Master主干为开发分支,开发者可通过Master主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。

* **OpenHarmony主干代码获取**

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

* **OpenHarmony发布版本代码获取**
  OpenHarmony发布版本获取源码方式请参考[Release-Notes](https://link.csdn.net/?target=ht ... 3Flogin%3Dfrom_csdn)。

# 3、编译源码

## 3.1、 执行prebuilts

在源码根目录下执行脚本,安装编译器及二进制工具。

```
bash build/prebuilts_download.sh
```

# 如果出现ssl校验失败,可以加上 --skip-ss

./build/prebuilts\_download.sh --skip-ssl

## 3.2、 编译

以hi3516为例子,进入源码根目录,执行如下命令进行版本编译。

```
./build.sh --product-name Hi3516DV300
```

检查编译结果。编译完成后,log中显示如下:

```
build system image successful.
=====build Hi3516DV300 successful.
```

![bash](https://devpress.csdnimg.cn/8a18d77421cc421faa12d16da2d4baee.png)

# 4、烧录指导

不同的芯片厂商可能烧录的工具和所需要安装的驱动不一样,目前以hi3516为例子进行烧录。

需要以下几个文件,分别是USB驱动,USB转串口驱动,hitool烧录工具和一个HiUSB补丁文件,这些可以去官网下载或者是联系芯片厂商提供。

![bash](https://devpress.csdnimg.cn/68c909cb1fdb41df8d539c90238e0d7e.png)

## 4.1、**安装USB驱动**

解压HiUSBBurnDriver这个压缩包。

如果你电脑是第一次安装 HiTool 工具,双击 HiUSBBurnDriver\\ InstallDriver.exe 安装 USB 驱动,再双击 烧录工具\\usb-patch-for-win8win10.reg,进行 USB 补丁的安装。

![bash](https://devpress.csdnimg.cn/2acdb214be19409c8b1e41a820d5bbc6.png)

## 4.2、**安装CH340驱动**

连接好 CH340G 串口线:先将 4pin 串口连接在核心板的 4pin 接口位置。CH340G 串口线接线如下图所示。

![bash](https://devpress.csdnimg.cn/5d0e19295d8a4324b80f3baa7faf641a.png)

CH340G 的实物图如下图所示

![bash](https://devpress.csdnimg.cn/f80a2df14fd740e29cfe0f5aa6a42dbb.png)

请将 USB 的一头插入电脑上,若你的电脑是第一次使用 CH340G 的串口线,需要安

装驱动,双击USB-to-Serial Comm Port.exe 驱动程序,如果在电脑的设备管理器上能看到设备即可

![bash](https://devpress.csdnimg.cn/7b7a8624bb734d229027487c9e66563b.png)

## 4.3、hitool配置及烧录步骤

### 4.3.1、**解压Hi3516-HiTool这个hitool工具的压缩包**

![bash](https://devpress.csdnimg.cn/3caa7475189647b89d4bc82ecff175e9.png)

### **4.3.2、直接双击烧录工具 Hi3516-HiTool\\HiTool.exe文件即可**

![bash](https://devpress.csdnimg.cn/886f775a7cf4464ab3c14d5595de65a5.png)

### **4.3.3、选择好正确的芯片类型:这里是 Hi3516DV300**

![bash](https://devpress.csdnimg.cn/f369d82c3e244a40afa6244b3951c6ed.png)

### 4.3.4、 **选择“emmc**”烧录和“USB口”烧录方式

![bash](https://devpress.csdnimg.cn/19a0ce3593df4501a4a7de35c61c2558.png)

### 4.3.5、 **选择已有的分区表文件或者自己在下面配置**

![bash](https://devpress.csdnimg.cn/e45989bef7a94e41b77e663997a04bf7.png)

选择这个xml之后呢,会自动识别好分区

![bash](https://devpress.csdnimg.cn/e81ddd1ed7d449cc86774b5c9a0afe44.png)

这个时候点击页面的烧写,然后按住3516板子的update建,就是串口旁边的那个。然后使用USB上电(注意:因硬件版本不同,有的板子USB烧录口是在主板左侧,有的是板子后面的凹槽处),然后等hitool工具进入烧录模式后,松开update键。

烧写成功后

![bash](https://devpress.csdnimg.cn/a049f4e869934a9180ed6beed18d99e0.png)

# 5、错误处理

由于OpenHarmony源码比较大,下载时可能会出现下载不完全的情况,这个时候我们只需要进入对应的目录进行下拉更新即可。如下图所示。
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5