OpenHarmony 2.0 Canary 编译的坑 原创 精华

liangkz_梁开祝
发布于 2021-6-6 21:51
浏览
5收藏

::: hljs-center

OpenHarmony 2.0 Canary 编译的坑

:::

这两天在尝鲜OpenHarmony2.0 Canary,根据官方文档做了相关配置和编译,确认OK,详情可见其他人分享的文章,这里我仅对我踩过的几个坑,做一下简单的总结。

1. OpenHarmony2.0 Canary上编译标准系统:

A. Python必须要 2.7 版本,因为:

/third_party/wayland_standard/python2_action.py
“”“Script for ensuring that a python action runs under Python2, not Python3.”“”

B. llvm 版本看上去没有要求,llvm-linux-9.0.0-36191和llvm-linux-10.0.1-53907 都可以。

2. OpenHarmony2.0 Canary上编译小型系统(Hi3516/Hi3518):

Python必须要 3.8 版本,llvm 则必须是llvm-linux-10.0.1-53907版本。
llvm-linux-9.0.0-36191 不可以,否则会出现:
OpenHarmony 2.0 Canary 编译的坑-鸿蒙开发者社区
这样的错误。

3. OpenHarmony2.0 Canary上编译轻量系统(Hi3861):

必须要 python3.8,编译器是gcc_riscv32,与llvm无关。


4. 在OpenHarmony 1.1.0 LTS上编译小型系统(Hi3516/Hi3518):

必须要 python3.8,llvm 版本则必须是llvm-linux-9.0.0-36191,
llvm-linux-10.0.1-53907不行!!

5. 在OpenHarmony 1.1.0 LTS上编译轻量系统(Hi3861):

必须要 python3.8,编译器是gcc_riscv32,与llvm无关。


因此,同一套虚拟机环境下,Canary与LTS共存,则需要:
Python2.7 与 python3.8 共存,
llvm-linux-9.0.0-36191 与 llvm-linux-10.0.1-53907 共存。
编译的时候,根据编译的项目做对应的切换即可。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2021-6-14 20:29:28修改
6
收藏 5
回复
举报
16条回复
按时间正序
/
按时间倒序
liangkz_梁开祝
liangkz_梁开祝

上述情况,希望能引起鸿蒙官方注意,这种编译条件的交叉,希望尽快统一一下。

1
回复
2021-6-6 21:56:32
Tuer白晓明
Tuer白晓明

我编译2.0出现了各种模块包不存在的问题,是python版本的问题吗?我得试试你说的方法

回复
2021-6-7 08:40:01
liangkz_梁开祝
liangkz_梁开祝 回复了 Tuer白晓明
我编译2.0出现了各种模块包不存在的问题,是python版本的问题吗?我得试试你说的方法

既然整个系统都开放出来了,并且已经有人验证编译烧录都没问题,那就极有可能是代码没有下载完整,或者本地编译链工具没有完全符合要求导致的,目前最大可能就是python和llvm的版本问题,也还有可能与node、java的版本有关,先尽量与官方文档中给出工具链的版本保持一致吧。

回复
2021-6-7 09:06:52
liangkz_梁开祝
liangkz_梁开祝

为了验证这个问题,我今天重新安装了一个虚拟机,从0开始按照官方指导搭建编译环境,一开始只安装了python3.8版本,编译失败了,log见附件。

失败的log说是

“FAILED: gen/third_party/wayland-ivi-extension/protocol/ivi-input-protocol.c gen/third_party/wayland-ivi-extension/protocol/ivi-input-client-protocol.h gen/third_party/wayland-ivi-extension/protocol/ivi-input-server-protocol.h 
/usr/bin/env ../../third_party/wayland_standard/python2_action.py ../../third_party/wayland_standard/wayland_scanner_wrapper.py third_party/wayland-ivi-extension/protocol/ivi-input.xml --src-root ../../ --root-gen-dir gen --cmd ./clang_x64/graphic/graphic_standard/wayland_scanner
/usr/bin/env: ‘../../third_party/wayland_standard/python2_action.py’: No such file or directory

去这个路径打开文件来查看,这个文件开头就说:

"""Script for ensuring that a python action runs under Python2, not Python3."""

 

然后重新安装了python2.7,软链接将python链接到2.7 版本,再次编译就OK了。

Canary Build OK vs NG.rar 172.5K 10次下载
1
回复
2021-6-8 21:32:03
liangkz_梁开祝
liangkz_梁开祝

把python版本换回2.7之后,再想去编译hispark_pegasus、hispark_taurus,hb set 直接出错。

把python版本换回3.8才能编译hispark_pegasus、hispark_taurus。

已于2021-6-8 21:45:53修改
回复
2021-6-8 21:34:56
wx607812894f34c
wx607812894f34c

请问编译hispark_pegasus、hispark_taurus还有个qemu?的命令参数是什么?哪里可以查看?

只知道--product-name Hi3516DV300 是编译hi3516dv300

./build.sh --product-name hispark_pegasus

./build.sh --product-name hispark_taurus

等都不能识别。

回复
2021-6-14 00:23:52
liangkz_梁开祝
liangkz_梁开祝

如上图,我在linux虚拟机里同时安装了python2.7和python3.8,同时安装了llvm9和llvm10,本地代码是master分支Canary。

  • 在Canary上,编译轻量系统、小型系统前,先执行:

sudo ln -sf /usr/bin/python3 /usr/bin/python

sudo ln -sf /opt/llvm-linux-10.0.1-53907 /opt/llvm

[将python 软链接为python3, 将llvm 软链接为 llvm10,因为我当前是在release分支上工作的,所以上图看到的是llvm链接为llvm9,上面两条命令需要根据你的python、llvm安装路径做修改]

然后执行” hb set ,出现“[OHOS INFO] Input code path: ”后,敲入一个英文状态下的句点“.”,这时候会出现三个编译选项,你想编哪个就选哪个,Enter之后,就可以直接敲“hb build”进行编译了。

 

  • 在Canary上,编译标准系统前,先执行:

sudo ln -sf /usr/bin/python2 /usr/bin/python

sudo ln -sf /opt/llvm-linux-9.0.0-36191 /opt/llvm

[将python 软链接为python2, 将llvm 软链接为 llvm9]

再在代码根目录下执行

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

就可以编译了。

 

 

1
回复
2021-6-14 06:56:37
liangkz_梁开祝
liangkz_梁开祝 回复了 wx607812894f34c
请问编译hispark_pegasus、hispark_taurus还有个qemu?的命令参数是什么?哪里可以查看? 只知道--product-name Hi3516DV300 是编译hi3516dv300 ./build.sh --product-name hispark_pegasus ./build.sh --product-name hispark_taurus 等都不能识别。

编译 qemu?这个我不大清楚。

其他的见上面的答复。

 

鸿蒙系统的编译环境和编译指令的不统一,确实会给开发者带来很多困惑。

已于2021-6-14 07:07:37修改
回复
2021-6-14 07:07:10
jerckNing
jerckNing 回复了 liangkz_梁开祝
如上图,我在linux虚拟机里同时安装了python2.7和python3.8,同时安装了llvm9和llvm10,本地代码是master分支Canary。 在Canary上,编译轻量系统、小型系统前,先执行: sudo ln -sf /usr/bin/python3 /usr/bin/python sudo ln -sf /opt/llvm-linux-10.0.1-53907 /opt/llvm [将python 软链接为python3, 将llvm 软链接为 llvm10,因为我当前是在release分支上工作的,所以上图看到的是llvm链接为llvm...

请问使用的是自己搭建ubuntu环境还是使用docker编译的呢,官方文档真的太糟糕了

回复
2021-7-8 10:23:14
liangkz_梁开祝
liangkz_梁开祝 回复了 jerckNing
请问使用的是自己搭建ubuntu环境还是使用docker编译的呢,官方文档真的太糟糕了

完全是自己搭建ubuntu环境。没有使用docker。

回复
2021-7-8 10:29:30
liangkz_梁开祝
liangkz_梁开祝 回复了 jerckNing
抱歉,此内容已被作者删除

我本地编译没问题,标准系统、小型系统、轻量系统编译均OK,bin也可以烧录到平台上正常运行。

你按官方指导一步步来配置环境,再参考我在本文提到的:

同一套虚拟机环境下,Canary与LTS共存,则需要:
Python2.7 与 python3.8 共存,
llvm-linux-9.0.0-36191 与 llvm-linux-10.0.1-53907 共存。
编译的时候,根据编译的项目做对应的切换即可。

 

社区私信看一下。

回复
2021-7-8 12:21:01
wx60b77cb36a76c
wx60b77cb36a76c

正在一块古董armv7l开发板上尝试踩坑……

1
回复
2021-7-15 15:30:01
Whyalone
Whyalone 回复了 wx60b77cb36a76c
正在一块古董armv7l开发板上尝试踩坑……

加油,欢迎把你的尝试分享出来

回复
2021-7-15 15:49:40
liangkz_梁开祝
liangkz_梁开祝 回复了 wx60b77cb36a76c
正在一块古董armv7l开发板上尝试踩坑……

请到时候分享一下出坑步骤,谢谢。

回复
2021-7-15 19:13:50
liangkz_梁开祝
liangkz_梁开祝

 

//third_party/wayland_standard/python2_action.py

已经替换为

/third_party/wayland_standard/python3_action.py

 

所以更新最新的canary代码,用python3是可以编译的了。

 

回复
2021-7-16 07:34:57
wx60b77cb36a76c
wx60b77cb36a76c 回复了 Whyalone
加油,欢迎把你的尝试分享出来

目前卡在编译工具链升级上了🤣 

回复
2021-7-31 13:03:28
回复
    相关推荐