前言
硬件平台基于HiHope_DAYU200开发板,参考HiHope_DAYU200/开发环境搭建编译指南.md · HiHope IOT物联网设备/Docs - Gitee.comhttps://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E7%BC%96%E8%AF%91%E6%8C%87%E5%8D%97.md
一、开发环境搭建
1、 选择开发方式,linux虚拟机或者实体linux机,主要考虑:
1)OpenHarmony南向开发工具DevEco的要求windows内存8G,linux16G,并且要求ubuntu为20.04以上;
2)OpenHarmony源码80G,磁盘空间提前备好,否则搭建过程中出现问题很麻烦;
3)性能尽力的好,编译的快;
二、编译环境搭建
搭建过程全程使用普通用户,root用户会出现一些奇奇怪怪的问题;
(如未特殊说明,是ubuntu18.04还是ununtu20.04的就是都适用)
先sudo dpkg-reconfigure dash, 选择 否,更换为bash;
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 libtinfo-dev libtinfo520.04相较18.04作了很多升级,有些环境本身就有,由于我是先在18上编译成功的,20直接拿来用了就;
2.注册gitee,绑定邮箱,之后会用,方法在gitee官网根据提示走就行;
3.生成gitee密钥
在终端输入ssh-keygen -t ed25519 -C "XXXXXXXX@XX.com",后面是你绑定gitee的邮箱;
按提示按3次回车即可;4.查看密钥
cat ~/.ssh/id_ed25519.pub,将生成的密钥添加到gitee;5.验证
ssh -T git@gitee.com
如果出现You've successfully authenticated,即成功;6.安装git客户端和git-lfs并配置用户信息:
git config --global user.name "用户名";
git config --global user.email "邮箱";
git config --global credential.helper store;7.安装码云repo工具,可以执行如下命令:
unbuntu18.04:
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 >/usr/local/bin/repo;
chmod a+x /usr/local/bin/repo //0777也行
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests;
ubuntu20.04:
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo;
cd git-repo
cp repo /usr/local/bin/
sudo chmod 0777 /usr/local/bin/repo
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo;
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests;8.获取源码操作步骤:
方法一:通过repo + ssh 下载(需注册公钥,请参考码云帮助中心);
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
输入此命令后报错:/usr/bin/env: "python": 没有那个文件或目录
查看/usr/bin/pyth*,发现有许多python的文件和其连接,但是就是没有python的,百度后
执行cd /usr/bin/,然后ln -s /usr/bin/python3.8 python,即可;
repo sync -c //20G空间不够,70G也不够,建议最少100G;
repo forall -c 'git lfs pull'; 方法二:通过repo + https 下载;
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c //20G空间不够
repo forall -c 'git lfs pull'9.执行prebuilts:
在源码根目录下执行脚本,安装编译器及二进制工具;
bash build/prebuilts_download.sh;
下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony_2.0_canary_prebuilts下;三、编译调试
在Linux环境进行如下操作:1.进入源码根目录,执行如下命令进行版本编译;
./build.sh --product-name rk3568 --ccache;2.编译过程中报错解决
1)报错:ModuleNotFoundError: No module named 'dataclasses'
apt install python-pip; pip install dataclasses; 没解决;
查看鸿蒙社区,搜索dataclasses,python3 -m pip install dataclasses,解决; 2)[OHOS ERROR] ninja: error: '../../prebuilts/build-tools/common/ts2abc/node_modules', needed by 'clang_x64/obj/ark/ts2abc/ts2panda/node_modules', missing and no known rule to make it
同时删除掉下面两个目录的 package-lock.json,
/developtools/ace-ets2bundle/compiler# /developtools/ace-js2bundle/ace-loader#
运行prebuilt_download.sh;结果,报错更多; 3)/bin/sh: 1: lz4c: not found;
sudo apt-get install liblz4-tool后,报错需要ca-certificates-java,openjdk-17-jre-headless
然后 sudo apt install ca-certificates-java,安装成功;
然后 sudo apt install openjdk-17-jre-headless,安装成功; 4)fatal error: openssl/bio.h: 没有那个文件或目录;
sudo apt-get install libssl-dev; 5)Warning: dtc tool does not exists,genext2fs: 未找到命令;
sudo apt install genext2fs;
以上报错,遇到了可按其中解决方法解决,没遇到可不安装相应的包,如果遇到了奇怪的问题,也可尝试安装;
3、接着编译 ./build.sh --product-name rk3568 --ccache;
终于,千辛万苦,终于编译成功!!!!!!!!!
4、检查编译结果。编译完成后,log中显示如下:
[OHOS INFO] rk3568 build success
[OHOS INFO] cost time: 0:03:40
=====build successful=====
2022-05-13 13:35:59
5、编译所生成的文件都归档在out目录下,结果镜像输出在
out/rk3568/packages/phone/images 目录下;
四、问题:
1、编译成功后,将固件烧录后,大禹200开发版不断重启,打印报错
bbox:[err][blackbox_core.c:299] info:(__ptrval__),ops:(__ptrval__)!
bbox:[info][blackbox_common.c:20] reset the system now!;
这个问题是由于最新版本的代码(20220509后的master)生成的固件需要不同之前的烧录方 式,解决方案有两种:
1)使用稳定版本代码,经验证,启动成功,稳定3.1版代码repo命令为:
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify (只需更换次命令即可,其他命令不变);
2)更改烧录方式;
按原来正常方式烧写到加载固件时,在更换路径的按钮处右键,弹出框选择导入配置,如下图:
misc、sys-prod、chip-prod三个不要勾选,其他正常选择,照常烧录即可;
新方式烧录固件后,大禹开发板启动会出现DAYU图标,然后再试OpenHarMony图标,OpenHarmony图标也更好看了;
参考:HiHope_DAYU200/docs/烧录指导文档.md · HiHope IOT物联网设备/Docs - Gitee.comhttps://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md