ubuntu 20.04编译openHarmony 4.0(开源鸿蒙) RK3568开辟板

打印 上一主题 下一主题

主题 822|帖子 822|积分 2466

总述

开源鸿蒙文档说明

开源鸿蒙的官方参考的开辟文档可以从两个地方得到。
一个是码云源码文档库。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情况中进行。

  • 利用如下apt-get命令安装后续操纵所需的库和工具:
    1. sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libc6-dev-amd64 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 genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev
    复制代码
    由于上面命令是鸿蒙官方重要基于ubuntu18.04测试的(猜测),而且是为了兼容大多数板子的开辟情况,因此在ubuntu 20.04会存在有些软件安装不上的题目。如下图。但是下图情况下,我是能正常编译RK3568镜像的,因此不需要过于纠结这步是否全部软件都安装完善,后面编译时,存在题目的话,根据详细报错去解决。

  • 将Python 3.8设置为默认Python版本。
    查看Python 3.8的位置:
    1. which python3.8
    复制代码
    将Python和Python3切换为Python 3.8:
    1. sudo update-alternatives --install /usr/bin/python python {Python 3.8 路径} 1    #{Python 3.8 路径}为上一步查看的Python 3.8的位置
    2. sudo update-alternatives --install /usr/bin/python3 python3 {Python 3.8 路径} 1   #{Python 3.8 路径}为上一步查看的Python 3.8的位置
    复制代码
    **注意:**该步调是个关键步调,固然ubuntu20.04 python版本默认是python3.8,但是鸿蒙源码编译要求实行python/python3命令实行的都是python3.8命令,而ubuntu20.04实行python命令实行的默认是python2.x命令。所以需要在命令行中分别敲python3和python,查看输出信息是否是python3.8。该步调不完成会报错误 SyntaxError: invalid syntax 错误(见参考编译错误)
    操纵参考文档链接:
    https://gitee.com/openharmony/docs/blob/OpenHarmony-4.0-Release/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md
安装编译工具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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表