ToB企服应用市场:ToB评测及商务社交产业平台

标题: ubuntu 20.04编译openHarmony 4.0(开源鸿蒙) RK3568开辟板 [打印本页]

作者: 河曲智叟    时间: 2024-10-16 13:53
标题: ubuntu 20.04编译openHarmony 4.0(开源鸿蒙) RK3568开辟板
总述

开源鸿蒙文档说明

开源鸿蒙的官方参考的开辟文档可以从两个地方得到。
一个是码云源码文档库。docs: OpenHarmony documentation | OpenHarmony开辟者文档 (gitee.com)
另一个是开源鸿蒙官方网站。https://docs.openharmony.cn/pages/v4.1/zh-cn/OpenHarmony-Overview_zh.md
其中,它们的文档都是一致的,而且开源鸿蒙官方网站展示结果、导航更加雅观。但是存在一个题目,只支持查看最新的版本文档。如下图。4.0已经不再支持,所以一些已经旧的开源鸿蒙官方网站文档链接(如v4.0)已经不支持访问,链接失效。

所以更推荐放码云源码文档库链接,文档本质都是一个个markdown文件,码云源码文档库保留着所有版本的文档文件,所以不消担心链接失效。但需要更加关心文档的目录布局。
编译源码Ubuntu版本推荐

官方文档中提到利用Ubuntu18.04和Ubuntu20及以上版本的情况。这里推荐利用Ubuntu20.04版本。、
一方面编译源码要求利用Python 3.8版本,而Ubuntu20.04原生是Python3.8,不需要切换python版本。而在Ubuntu18.04需要额外去安装一个Python 3.8版本,事情会变得很贫苦。为了编译鸿蒙源码,需要切换本机的python版本为Python3.8,而这会导致体系其他依赖原Python 3.6版本软件无法运行,处理起来很贫苦,不安全也不优雅。
另一方面实际在编译RK3568产品时,也会遇到报错。报错缘故原由是Ubuntu18.04的libc版本过低导致的,需要用高版本libc更换本机libc(该操纵不安全)。
所以推荐利用Ubuntu20.04。
下载指定版本开源鸿蒙源码

下载指定版本开源鸿蒙源码,源码包中包含了轻量、小型、标准所有产品的源码。
从码云官方源码文档仓库中查看版本发布记录
zh-cn/release-notes · OpenHarmony/docs - 码云 - 开源中国 (gitee.com)
我想下载4.0版本,如下图,点击进去

推荐利用镜像站下载,直接打包好压缩包,避免过程中各种下载错误

编译开源鸿蒙4.0 RK3568开辟板

实行prebuilts

在源码根目录下实行prebuilts脚本,安装编译器及二进制工具。
  1. bash build/prebuilts_download.sh
复制代码
该步调需要联网下载对应的依赖库,一样平常不会遇到题目。如该步调遇到错误,参考后面《参考编译错误-实行build/prebuilts_download.sh失败》
安装库和工具集

利用命令行进行设备开辟时,可以通过以下步调安装编译OpenHarmony需要的库和工具。相应操纵在Ubuntu情况中进行。
安装编译工具hb

操纵参考文档链接:
zh-cn/device-dev/quick-start/quickstart-pkg-install-tool.md · OpenHarmony/docs - 码云 - 开源中国 (gitee.com)
参考编译错误

SyntaxError: invalid syntax 错误

  1. [OHOS INFO] ERROR at //build/templates/cxx/cxx.gni:889:26: Script returned non-zero exit code.
  2. [OHOS INFO]         handler_result = exec_script(external_deps_script, arguments, "string")
  3. [OHOS INFO]                          ^----------
  4. [OHOS INFO] Current dir: /home/xiaoy/disk4/PowerHarmony_SDK_V1.0.1.0/out/rk3568/
  5. [OHOS INFO] Command: /usr/bin/env /home/xiaoy/disk4/PowerHarmony_SDK_V1.0.1.0/build/templates/common/external_deps_handler.py --external-deps c_utils:utils hilog:libhilog ipc:ipc_single napi:ace_napi graphic_2d:surface --parts-src-flag-file build_configs/parts_src_flag.json --external-deps-temp-file gen/base/useriam/face_auth/frameworks/js/napi/face_auth__faceauth_external_deps_temp.json --sdk-base-dir ../../sdk/ohos-arm64 --sdk-dir-name sdk/ohos-arm64 --current-toolchain //build/toolchain/ohos:ohos_clang_arm64 --innerkits-adapter-info-file ../../build/ohos/inner_kits_adapter.json --component-override-map /home/xiaoy/disk4/PowerHarmony_SDK_V1.0.1.0/out/rk3568/build_configs/component_override_map.json
  6. [OHOS INFO] Returned 1.
  7. [OHOS INFO] stderr:
  8. [OHOS INFO]
  9. [OHOS INFO] Traceback (most recent call last):
  10. [OHOS INFO]   File "/home/xiaoy/disk4/PowerHarmony_SDK_V1.0.1.0/build/templates/common/external_deps_handler.py", line 23, in <module>
  11. [OHOS INFO]     from scripts.util.file_utils import read_json_file, write_json_file  # noqa: E402
  12. [OHOS INFO]   File "/home/xiaoy/disk4/PowerHarmony_SDK_V1.0.1.0/build/scripts/util/file_utils.py", line 102
  13. [OHOS INFO]     gn_exe = os.path.join(code_dir, f'prebuilts/build-tools/{os_name}-x86/bin/gn')
  14. [OHOS INFO]                                                                                 ^
  15. [OHOS INFO] SyntaxError: invalid syntax
  16. [OHOS INFO]
  17. [OHOS INFO] See //base/useriam/face_auth/frameworks/js/napi/BUILD.gn:16:1: whence it was called.
  18. [OHOS INFO] ohos_shared_library("faceauth") {
  19. [OHOS INFO] ^--------------------------------
  20. [OHOS INFO] See //build/ohos/ohos_part.gni:25:16: which caused the file to be included.
  21. [OHOS INFO]     _deps += [ get_label_info(module_label, "label_with_toolchain") ]
  22. [OHOS INFO]                ^--------------------------------------------------
  23. [OHOS INFO] has_hisysevent_part = false
  24. [OHOS INFO] power_interface_service
  25. [OHOS INFO] location_agnss
  26. [OHOS INFO] power_interface_service
  27. [OHOS INFO] ["--in_zip_path", "../../third_party/mindspore/mindspore-v1.8.1.zip", "--out_src_path", "../../third_party/mindspore/mindspore-src", "--patch_dir", "../../third_party/mindspore/patches/"]
复制代码
解决:在ubuntu20.04中,实行python命令,默认实行的是python2.x版本,而鸿蒙要求的是python3.8版本。
  1. sudo update-alternatives --install /usr/bin/python python {Python 3.8 路径} 1    #{Python 3.8 路径}为上一步查看的Python 3.8的位置
复制代码
可利用update-alternatives命令切换python实行python3.8命令。确保在命令行中实行python,显示的是python3.8版本。
实行build/prebuilts_download.sh失败

  1. npm install try times: 1
  2. start npm install, please wait.
  3. Traceback (most recent call last):
  4. File "/data/harmony_work/build/prebuilts_download.py", line 376, in <module>
  5. sys.exit(main())
  6. File "/data/harmony_work/build/prebuilts_download.py", line 355, in main
  7. result, error = _npm_install(args)
  8. File "/data/harmony_work/build/prebuilts_download.py", line 209, in _npm_install
  9. proc = subprocess.Popen(cmd, cwd=full_code_path, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  10. File "/usr/lib/python3.8/subprocess.py", line 854, in init
  11. self._execute_child(args, executable, preexec_fn, close_fds,
  12. File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
  13. raise child_exception_type(errno_num, err_msg, err_filename)
  14. FileNotFoundError: [Errno 2] No such file or directory: '/data/harmony_work/prebuilts/build-tools/common/nodejs/current/bin/npm'
复制代码
参考官方的Issues:https://gitee.com/openharmony/docs/issues/I85KPR
解决:该题目的报错过程中,可以看到是无法正常下载工具包的。尝试官方的Issues提到的解决方法也没有结果。这时间需要思索是否利用了翻墙等代理软件,将翻墙软件关闭,重新实行,发现该题目解决。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4