在使用开源Openharmoney的时候,要想每次使用到最新的内核基线包的功能就需要经常更新系统。但是对于新手来说确实是有点困难,很多朋友对编译环境就搞的头大,最开始的时候,我自己也是,源码编译时间长就不说了,经常失败就是最大的烦恼。经过一段时间摸索后做出以下总结。
1.下载最新的系统源码:
根据自己的需要下载:
个人习惯使用wget下载到当前目录下,然后使用 tar -xvf code.XX.tar.gz 来解压。
有一点需要注意的事就是,如果你使用的事虚拟机,最好需要分配200G可用空间,当然越大越好。
2.安装以下依赖项:
binutils git git-lfs gnupg flex
bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib
libc6-dev-i386 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 device-tree-compiler lib32stdc++6 lib32z1 libncurses5-dev lib32ncurses6
3.等所有依赖安装成功后再源码根目录执行:
bash build/prebuilts_download.sh
执行上面的脚本下载依赖库根据网络情况,正常情况是可以成功的。前提是需要安装依赖项需要安装成功,如果依赖项安装失败就需要根据实际情况先把依赖项需要的都先安装成功。
4.运行如下命令安装hb并更新至最新版本,以下三个安装一个成功就可以了,在使用的时候有的系统环境的原因会失败,可以都尝试下
pip3 install --user build/lite #python3 -m pip install --user ohos-build #pip install build/lite
卸载:pip3 uninstall ohos-build #正常情况下是不使用
在源码目录执行"hb -h",界面打印以下信息即表示安装成功:
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
5.设置环境变量
vim ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
执行如下命令更新环境变量。
source ~/.bashrc
6.到这来就有两种编译源码方式了:
第一种就是使用:
hb set #设置product-name
hb build
第二种就是:
#进入源码根目录,执行如下命令进行版本编译:
./build.sh --product-name XXXX –ccache
当然最终效果都是一样的,这个编译过程根据个人电脑性能有关了,本人因为用的是虚拟机就有点长了。
下面留着到时候使用Docker镜像的方式编译源码
问题汇总:
因为之前碰到的问题解决了都没有记录,后面会把遇到的问题都记录下来供大家参考:
1.
ERROR at //build/core/gn/loader.gni:82:15: Script returned non-zero exit code.
load_result = exec_script(build_loader_script, arguments, "string")
^----------
Current dir: /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/out/unionpi_tiger/
Command: /usr/bin/env /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/build/loader/load.py --subsystem-config-file /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/out/preloader/unionpi_tiger/subsystem_config.json --platforms-config-file /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/out/preloader/unionpi_tiger/platforms.build --exclusion-modules-config-file /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/out/preloader/unionpi_tiger/exclusion_modules.json --source-root-dir /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/ --gn-root-out-dir /home/jwq/hm/code-v3.2-Beta3/OpenHarmony/out/unionpi_tiger --target-os ohos --target-cpu arm --os-level standard --load-test-config --ignore-api-check xts common developertest
Returned 1.
stderr:Traceback (most recent call last):
File "/home/jwq/hm/code-v3.2-Beta3/OpenHarmony/build/loader/load.py", line 21, in <module>
from loader import subsystem_info # noqa: E402
ImportError: No module named loaderSee //build/core/gn/BUILD.gn:21:1: whence it was imported.
import("//build/core/gn/loader.gni")解决办法:缺少依赖,安装下面的就可解决(我的是这样的)
pip3 install --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple requests setuptools pymongo kconfiglib pycryptodome ecdsa ohos-build pyyaml prompt_toolkit==1.0.14 redis json2html yagmail python-jenkins
pip3 install esdk-obs-python --trusted-host pypi.org
pip3 install six --upgrade --ignore-installed six
2.hb安装异常处理
hb安装过程中出现乱码、段错误
- 现象描述
执行“python3 -m pip install --user ohos-build”出现乱码、段错误(segmentation fault)。 - 可能原因
pip版本过低。 - 解决办法
执行如下命令升级pip。 python3 -m pip install -U pip
hb安装过程中提示"cannot import 'sysconfig' from 'distutils'"
- 现象描述
执行“python3 -m pip install --user ohos-build”提示"cannot import 'sysconfig' from 'distutils'" - 可能原因
缺少distutils模块。 - 解决办法
执行如下命令安装。 sudo apt-get install python3.8-distutils
hb安装过程中提示"module 'platform' has no attribute 'linux_distribution'"
- 现象描述
执行“python3 -m pip install --user ohos-build”提示"module 'platform' has no attribute 'linux_distribution'" - 可能原因
python3 pip安装兼容性问题。 - 解决办法
执行如下命令重新安装pip。 sudo apt remove python3-pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py
hb安装过程中提示"Could not find a version that satisfies the requirement ohos-build"
- 现象描述
执行“python3 -m pip install --user ohos-build”提示"Could not find a version that satisfies the requirement ohos-build" - 可能原因
可能是网络环境较差导致的安装失败。 - 解决办法
- 请检查网络连接是否正常。如果网络有问题,请修复网络问题后重新安装。
- 若网络正常,请尝试指定临时pypi源的方式安装: python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ohos-build
3
. [OHOS ERROR] cp: cannot create regular file 'obj/third_party/jsframework/runtime/css-what/.git/objects/dd/9d8b09685be77c0a0f37ef907657363a00bac2': Permission denied