一、環(huán)境配置
編譯環(huán)境:Ubuntu 20.04
OpenHarmony 軟件版本:4.0 Release
設(shè)備平臺:rk3568
二、下拉代碼
參考官網(wǎng)步驟:
OpenHarmony 4.0 Release 源碼獲取
repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-4.0-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
三、編譯代碼
參考官網(wǎng)構(gòu)建步驟:
v4.0 Release 編譯構(gòu)建
bash build/prebuilts_download.sh
./build.sh --product-name rk3568 --ccache
如果上述步驟一切順利,編譯通過,build log如下:
...
Please modify according to README.md
[OHOS INFO] rk3568 build success
[OHOS INFO] Cost time: 0:58:44
=====build successful=====
2023-11-08 14:48:55
++++++++++++++++++++++++++++++++++++++++
四、下拉及編譯中遇到的問題
4.1、repo: error: unable to resolve “fork_flow”
下拉代碼執(zhí)行報錯
$ repo init -u https://gitee.com/openharmony/manifest -b master --no-repo-verify
Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
remote: Enumerating objects: 4885, done.
remote: Counting objects: 100% (4885/4885), done.
remote: Compressing objects: 100% (2425/2425), done.
remote: Total 8626 (delta 4312), reused 2460 (delta 2460), pack-reused 3741
Receiving objects: 100% (8626/8626), 4.16 MiB | 9.25 MiB/s, done.
Resolving deltas: 100% (5577/5577), done.
repo: warning: verification of repo code has been disabled;
repo will not be able to verify the integrity of itself.
repo: error: unable to resolve "fork_flow"
fatal: cloning the git-repo repository failed, will remove '.repo/repo'
unable to resolve “fork_flow”" 表明repo工具無法解析名為 “fork_flow”,實(shí)際上fork_flow是repo倉庫的一個分支
repo源碼:開源中國/repo
解決方案:修改REPO_REV默認(rèn)值為stable
$ which repo #查看repo安裝路徑
/home/xxx/bin/repo
$ sudo vim /home/xxx/bin/repo
#REPO_REV = 'fork_flow' 改為 REPO_REV = 'stable'
4.2 ERROR: HTTP error 404 while getting http://repo.huaweicloud.com/repository/pypi/…
執(zhí)行bash build/prebuilts_download.sh后出現(xiàn)如下報錯
$ bash build/prebuilts_download.sh
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: http://repo.huaweicloud.com/repository/pypi/simple
Collecting rich
Obtaining dependency information for rich from http://repo.huaweicloud.com/repository/pypi/packages/8d/5f/21a93b2ec205f4b79853ff6e838e3c99064d5dbe85ec6b05967506f14af0/rich-13.5.2-py3-none-any.whl.metadata
ERROR: HTTP error 404 while getting http://repo.huaweicloud.com/repository/pypi/packages/8d/5f/21a93b2ec205f4b79853ff6e838e3c99064d5dbe85ec6b05967506f14af0/rich-13.5.2-py3-none-any.whl.metadata
ERROR: 404 Client Error: Not Found for url: http://repo.huaweicloud.com/repository/pypi/packages/8d/5f/21a93b2ec205f4b79853ff6e838e3c99064d5dbe85ec6b05967506f14af0/rich-13.5.2-py3-none-any.whl.metadata
prebuilts_download start
...
無效url:http://repo.huaweicloud.com/repository/pypi/packages/…
解決方案:
使用其他國內(nèi)(清華)鏡像源替換華為的pypi源,修改如下:
# build/prebuilts_download.sh
- pypi_url='http://repo.huaweicloud.com/repository/pypi/simple'
+ pypi_url='https://pypi.tuna.tsinghua.edu.cn/simple'
4.3 一直卡在start npm install, please wait.
執(zhí)行bash build/prebuilts_download.sh后一直卡在start npm install, please wait.
分析prebuilts_download.sh代碼發(fā)現(xiàn)是npm源的問題,于是替換npm默認(rèn)url
解決方案:
使用國內(nèi)(淘寶)鏡像源替換華為npm源,修改如下:
# build/prebuilts_download.py
- parser.add_argument('--npm-registry', default='https://repo.huaweicloud.com/repository/npm/',
+ parser.add_argument('--npm-registry', default='https://registry.npm.taobao.org/',
4.4 ld.lld: error: undefined symbol: __aarch64_cas4_acq_rel…raise OHOSException(‘ninja phase failed’, ‘4000’)
詳細(xì)報錯如下:
[OHOS ERROR] ld.lld: error: undefined symbol: __aarch64_cas4_acq_rel
[OHOS ERROR] >>> referenced by hdf_vnode_adapter.c:294 (/home/xxx/OHOS/OpenHarmony_master/out/kernel/OBJ/linux-5.10/../../../../drivers/hdf_core/framework/core/adapter/vnode/src/hdf_vnode_adapter.c:294)
[OHOS ERROR] >>> vmlinux.o:(HdfVNodeAdapterIoctl)
[OHOS ERROR] >>> referenced by hdf_vnode_adapter.c:303 (/home/xxx/OHOS/OpenHarmony_master/out/kernel/OBJ/linux-5.10/../../../../drivers/hdf_core/framework/core/adapter/vnode/src/hdf_vnode_adapter.c:303)
[OHOS ERROR] >>> vmlinux.o:(HdfVNodeAdapterIoctl)
[OHOS ERROR] >>> referenced by hdf_vnode_adapter.c:428 (/home/xxx/OHOS/OpenHarmony_master/out/kernel/OBJ/linux-5.10/../../../../drivers/hdf_core/framework/core/adapter/vnode/src/hdf_vnode_adapter.c:428)
[OHOS ERROR] >>> vmlinux.o:(HdfDeviceSendEventToClient)
[OHOS ERROR] >>> referenced 1 more times
[OHOS ERROR] BTF .btf.vmlinux.bin.o
[OHOS ERROR] pahole: .tmp_vmlinux.btf: No such file or directory
[OHOS ERROR] LD .tmp_vmlinux.kallsyms1
[OHOS ERROR] ld.lld: error: .btf.vmlinux.bin.o: unknown file type
[OHOS ERROR] make[2]: *** [/home/xxx/OHOS/OpenHarmony_master/out/kernel/src_tmp/linux-5.10/Makefile:1236: vmlinux] Error 1
[OHOS ERROR] make[1]: *** [arch/arm64/Makefile:208: rk3568-toybrick-x0-linux.img] Error 2
[OHOS ERROR] make[1]: Leaving directory '/home/xxx/OHOS/OpenHarmony_master/out/kernel/OBJ/linux-5.10'
[OHOS ERROR] make: *** [Makefile:192: __sub-make] Error 2
[OHOS ERROR] Traceback (most recent call last):
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/services/ninja.py", line 70, in _execute_ninja_cmd
[OHOS ERROR] SystemUtil.exec_command(
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/util/system_util.py", line 64, in exec_command
[OHOS ERROR] raise OHOSException(
[OHOS ERROR] exceptions.ohos_exception.OHOSException: Please check build log in /home/xxx/OHOS/OpenHarmony_master/out/rk3568/build.log
[OHOS ERROR]
[OHOS ERROR] During handling of the above exception, another exception occurred:
[OHOS ERROR]
[OHOS ERROR] Traceback (most recent call last):
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/containers/status.py", line 47, in wrapper
[OHOS ERROR] return func(args, **kwargs)
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/modules/ohos_build_module.py", line 67, in run
[OHOS ERROR] raise exception
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/modules/ohos_build_module.py", line 65, in run
[OHOS ERROR] super().run()
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/modules/interface/build_module_interface.py", line 72, in run
[OHOS ERROR] raise exception
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/modules/interface/build_module_interface.py", line 70, in run
[OHOS ERROR] self._target_compilation()
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/modules/ohos_build_module.py", line 103, in _target_compilation
[OHOS ERROR] self.target_compiler.run()
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/services/ninja.py", line 38, in run
[OHOS ERROR] self._execute_ninja_cmd()
[OHOS ERROR] File "/home/xxx/OHOS/OpenHarmony_master/build/hb/services/ninja.py", line 77, in _execute_ninja_cmd
[OHOS ERROR] raise OHOSException('ninja phase failed', '4000')
[OHOS ERROR] exceptions.ohos_exception.OHOSException: ninja phase failed
[OHOS ERROR]
[OHOS ERROR] Code: 4000
[OHOS ERROR]
[OHOS ERROR] Reason: ninja phase failed
[OHOS ERROR]
[OHOS ERROR] Solution: Please check the compile log at out/{compiling product}/build.log, If you could analyze build logs.
[OHOS ERROR] Or you can try the following steps to solve this problem:
[OHOS ERROR] 1. cd to OHOS root path
[OHOS ERROR] 2. run 'hb clean --all' or 'rm -rf out build/resources/args/.json'.
[OHOS ERROR] 3. repo sync
[OHOS ERROR] 4. repo forall -c 'git lfs pull'
[OHOS ERROR] 5. bash build/prebuilts_download.sh
[OHOS ERROR] 6. rebuild your product or component
[OHOS ERROR] 7. check if any environment variables required by the building process are not set in build/compile_env_allowlist.json
[OHOS ERROR]
[OHOS ERROR] If you still cannot solve this problem, you could post this problem on:
[OHOS ERROR] https://gitee.com/openharmony/build/issues
[OHOS ERROR]
=====build error=====
先從出現(xiàn)ERROR開始處分析一遍報錯log,若無明顯代碼報錯,可嘗試:文章來源:http://www.zghlxwxcb.cn/news/detail-752317.html
sudo ./build.sh -p rk3568
sudo 命令在共用編譯服務(wù)器慎用,以免影響其他人的編譯環(huán)境。
若使用sudo編譯通過,則說明與編譯環(huán)境有關(guān),可從以下幾個方面處理:文章來源地址http://www.zghlxwxcb.cn/news/detail-752317.html
- 重新配置編譯
- 重裝編譯系統(tǒng)
- 使用docker編輯編譯,可參考博文:Docker 編譯OpenHarmony 4.0 release
到了這里,關(guān)于OpenHarmony 4.0 Release 編譯異常處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!