HarmonyOS 编译系统源码
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HarmonyOS 编译系统源码相关的知识,希望对你有一定的参考价值。
文章目录
一、获取源码
1、准备工作
注意: 【若已安装git和repo可忽略此节】
(1)注册码云gitee账号
(2)注册码云SSH公钥,请参考码云帮助中心
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
(4)安装码云repo工具,可以执行如下命令
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
2、下载源码
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
成功显示下列分支,则表示下载成功!
二、搭建系统环境
方式一:Docker 环境
方式二:Ubuntu 环境
本文第三节将详细讲解该环境的搭建步骤。
三、Ubuntu 编译环境准备
1、安装和配置Python
官方要求: Python 在 3.7.4及以上版本,满足可忽略(1)、(2)、(3)步骤
(1)查看当前Python版本 【前提条件需要:Python 3.7.4及以上版本】
python --version
(2)如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。
- 运行如下命令,查看Ubuntu版本:
cat /etc/issue
- 如果 Ubuntu 版本为18+,运行如下命令。
sudo apt-get install python3.8
- 如果 Ubuntu版本为16
- a. 安装依赖包
sudo apt update && sudo apt install software-properties-common
- b. 添加deadsnakes PPA 源,然后按回车键确认安装。
sudo add-apt-repository ppa:deadsnakes/ppa
- c. 安装 python3.8
sudo apt upgrade && sudo apt install python3.8
(3)设置python和python3 软链接为python3.8。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
(4)安装并升级Python包管理工具(pip3),任选如下一种方式。
- 命令行方式:
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
- 安装包方式:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
2、创建系统环境目录
在home目录下,创建HarmonyOSDev文件夹,如图:
该目录作为下面安装环境的根目录
mkdir HarmonyOSDev
3、安装gn
(1)下载gn安装包
sudo wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
报错:Unable to establish SSL connection.(无法建立SSL连接)
解决:把https改成http
(2)在根目录下创建gn文件夹
mkdir gn
(3)解压ninja安装包至/home/HarmonyOSDev/gn路径下
tar -xvf gn-linux-x86-1717.tar.gz
(4)设置环境变量
sudo gedit ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出
export PATH=/home/HarmonyOSDev/gn:$PATH
(5)生效环境变量
source ~/.bashrc
4、安装ninja
(1)下载ninja安装包
sudo wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
报错:Unable to establish SSL connection.(无法建立SSL连接)
解决:把https改成http
(2)在根目录下创建ninja文件夹
mkdir ninja
(3)解压ninja安装包至/home/HarmonyOSDev/ninja路径下
tar -xvf ninja.1.9.0.tar
(4)设置环境变量
sudo gedit ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出
export PATH=/home/HarmonyOSDev/ninja/ninja:$PATH
(5)生效环境变量
source ~/.bashrc
5、安装hc-gen
(1)下载hc-gen安装包
sudo wget https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
报错:Unable to establish SSL connection.(无法建立SSL连接)
解决:把https改成http
(2)在根目录下创建hc-gen文件夹
mkdir hc-gen
(3)解压hc-gen安装包至/home/HarmonyOSDev/hc-gen路径下
tar -xvf hc-gen-0.65-linux.tar
(4)设置环境变量
sudo gedit ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出
export PATH=/home/HarmonyOSDev/hc-gen/hc-gen:$PATH
(5)生效环境变量
source ~/.bashrc
6、安装llvm
(1)下载llvm安装包
sudo wget https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar
报错:Unable to establish SSL connection.(无法建立SSL连接)
解决:把https改成http
(2)在根目录下创建llvm文件夹
mkdir llvm
(3)解压llvm安装包至/home/HarmonyOSDev/llvm路径下
sudo tar -xvf llvm-linux-9.0.0-36191.tar
(4)设置环境变量
sudo gedit ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出
export PATH=/home/HarmonyOSDev/llvm/llvm/bin:$PATH
(5)生效环境变量
source ~/.bashrc
7、安装hb
(1)运行如下命令安装hb
python3 -m pip install --user ohos-build
(2)设置环境变量
sudo gedit ~/.bashrc
将以下命令拷贝到.bashrc文件的最后一行,保存并退出
export PATH=~/.local/bin:$PATH
(3)更新环境变量
source ~/.bashrc
(4)执行"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)如果装错,卸载命令执行如下:
python3 -m pip uninstall ohos-build
8、升级 jdk
【官方要求:jdk 版本要在1.8以上】
(1)下载 jdk
jdk官网
(2)解压
tar -xzvf jdk-8u144-linux-x64.tar.gz
(3)移到usr/lib/jvm/目录下
sudo mv jdk1.8.0_144/ /usr/lib/jvm/jdk1.8.0_144
(4)查看当前jdk的优先级
sudo update-alternatives --config java
sudo update-alternatives --config javac
状态会有两种:自动模式和手动模式
自动模式既默认模式;手动模式需要手动切换,重启后会自动切为自动模式的,而自动模式的只有一个,默认是优先级最高的那个,所以如果想把1.8设置默认的,需要把优先级设为最高
java 和 javac 都要选择
(5)更新
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_144/bin/java 1072
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_144/bin/javac 1072
(6)配置 JAVA_HOME(选其中一种方式配置即可)
- profile 配置
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_144/
source /etc/profile
- bashrc 配置
sudo vim ~/.bashrc
source ~/.bashrc
(7)检查一下,jdk版本是否升级成功
java -version
9、常见问题
(1)hb 安装过程中出现乱码、段错误
-
现象描述
执行“python3 -m pip install --user ohos-build”出现乱码、段错误 -
可能原因
pip版本过低 -
解决办法
执行如下命令升级pip
python3 -m pip install -U pip
(2)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
(3)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
(4)Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt_pkg”
-
现象描述
Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt_pkg" -
可能原因
python3 apt安装兼容性问题。 -
解决办法
执行如下命令重新安装python3-apt。
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
(5)编译时报错: SOLINK ./libopenssl_shared.so,FAILED: libcjson_shared.so
思路:将 llvm 换成 llvm9 版本
解决办法:
- a. 下载llvm9
sudo wget https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar
报错:Unable to establish SSL connection.(无法建立SSL连接)
解决:把https改成http
- b. 更改 llvm版本
一定要更改成 llvm 9的版本
export PATH=/home/HarmonyOSDev/llvm/llvm/bin:$PATH
- c. 更改 clang 版本(选其中一种方式即可)
clang 版本 换成 (llvm9版本)llvm/bin目录下 clang 9
(6)解决:[OHOS ERROR] clang not found, install it please
- a. 首先确定自己是否安装且配置了llvm和clang
- b. 一般Ubuntu都会自带llvm和clang,所以我们要更改系统指定的llvm和clang变为我们下载的llvm 9.0版本和clang 9.0版本即可。
llvm 9下载地址
(7)解决:安装配置好 hb后,hb -h检测不到环境的问题
- a. 打开配置文件
sudo gedit ~/.bashrc
- b. 检查bashrc 文件末尾是否有
export PATH=~/.local/bin:$PATH
- c. 确定好后,切换到 root 账户下
source ~/.bashrc
-
d. Ctrl + d 切换回普通用户
-
e. 执行"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
(8)Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
分析原因:
以 root 身份运行 pip 会破坏包和权限
解决办法:
不要以root的身份去执行你的命令
Ctrl + d 退出root模式
四丶编译HarmonyOS 源码
声明:【请按照顺序执行,避免踩坑】
1、在源码根目录下打开终端
2、在root 下生效环境变量,预防报错
sudo -s
su root
source ~/.bashrc
3、用hb 设置开发环境
hb set
.
这里我们选择:ipcamera_hispark_taurus
ENTER 回车
完成后,会在根目录显示 ohos_config.json 文件。
4、执行脚本,开始编译
python3 build.py
显示:[OHOS INFO] ipcamera_hispark_taurus build success
表示编译成功!
5、编译结果
编译结果会产生在 out 文件夹下
6、常见问题
- 情况一:
解决办法:
按照 步骤3 走一遍。
情况二:
解决办法:
请严格按照步骤 2~4,重新走一遍!
以上是关于HarmonyOS 编译系统源码的主要内容,如果未能解决你的问题,请参考以下文章
鸿蒙内核源码分析(ninja应用篇) | 简单而快速的构建系统 | 百篇博客分析HarmonyOS源码 | v61.01
鸿蒙内核源码分析(编译脚本篇) | 如何防编译环境中的牛皮癣 | 百篇博客分析HarmonyOS源码 | v58.01
鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 百篇博客分析HarmonyOS源码
鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程 | 百篇博客分析HarmonyOS源码 | v59.01
鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析HarmonyOS源码 | v54.01