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 不可以,否则会出现:
这样的错误。
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
回复
相关推荐
上述情况,希望能引起鸿蒙官方注意,这种编译条件的交叉,希望尽快统一一下。
我编译2.0出现了各种模块包不存在的问题,是python版本的问题吗?我得试试你说的方法
既然整个系统都开放出来了,并且已经有人验证编译烧录都没问题,那就极有可能是代码没有下载完整,或者本地编译链工具没有完全符合要求导致的,目前最大可能就是python和llvm的版本问题,也还有可能与node、java的版本有关,先尽量与官方文档中给出工具链的版本保持一致吧。
为了验证这个问题,我今天重新安装了一个虚拟机,从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了。
把python版本换回2.7之后,再想去编译hispark_pegasus、hispark_taurus,hb set 直接出错。
把python版本换回3.8才能编译hispark_pegasus、hispark_taurus。
请问编译hispark_pegasus、hispark_taurus还有个qemu?的命令参数是什么?哪里可以查看?
只知道--product-name Hi3516DV300 是编译hi3516dv300
./build.sh --product-name hispark_pegasus
./build.sh --product-name hispark_taurus
等都不能识别。
如上图,我在linux虚拟机里同时安装了python2.7和python3.8,同时安装了llvm9和llvm10,本地代码是master分支Canary。
[将python 软链接为python3, 将llvm 软链接为 llvm10,因为我当前是在release分支上工作的,所以上图看到的是llvm链接为llvm9,上面两条命令需要根据你的python、llvm安装路径做修改]
然后执行” hb set ”,出现“[OHOS INFO] Input code path: ”后,敲入一个英文状态下的句点“.”,这时候会出现三个编译选项,你想编哪个就选哪个,Enter之后,就可以直接敲“hb build”进行编译了。
[将python 软链接为python2, 将llvm 软链接为 llvm9]
再在代码根目录下执行
就可以编译了。
编译 qemu?这个我不大清楚。
其他的见上面的答复。
鸿蒙系统的编译环境和编译指令的不统一,确实会给开发者带来很多困惑。
请问使用的是自己搭建ubuntu环境还是使用docker编译的呢,官方文档真的太糟糕了
完全是自己搭建ubuntu环境。没有使用docker。
我本地编译没问题,标准系统、小型系统、轻量系统编译均OK,bin也可以烧录到平台上正常运行。
你按官方指导一步步来配置环境,再参考我在本文提到的:
同一套虚拟机环境下,Canary与LTS共存,则需要:
Python2.7 与 python3.8 共存,
llvm-linux-9.0.0-36191 与 llvm-linux-10.0.1-53907 共存。
编译的时候,根据编译的项目做对应的切换即可。
社区私信看一下。
正在一块古董armv7l开发板上尝试踩坑……
加油,欢迎把你的尝试分享出来
请到时候分享一下出坑步骤,谢谢。
//third_party/wayland_standard/python2_action.py
已经替换为
/third_party/wayland_standard/python3_action.py
所以更新最新的canary代码,用python3是可以编译的了。
目前卡在编译工具链升级上了🤣