四、将三方库加入到OpenHarmony的编译体系
根据上一步分析结果,编写gn文件,将三方库加入到OpenHarmony的编译体系。
OpenHarmony编译构建子系统提供了一个基于Gn和ninja的编译构建框架。根据产品配置,编译生成对应的镜像包。其中编译构建流程为:
- 使用Gn配置构建目标。
- Gn运行后会生成ninja文件。
- 通过运行ninja来执行编译任务。
OpenHarmony三方库编译环境搭建
本次移植时在openharmony3.2Beta1版本上运行的,所以需要准备openharmony3.2Beta1的源码。
先在Widows上安装虚拟机,在虚拟机上安装Ubuntu18.04或者20.04。笔者使用的为Ubuntu20.04。
1.将Ubuntu Shell
环境修改为bash
- 打开终端执行
sudo dpkg-reconfigure dash
- 将Shell由dash改为bash。
- 选择
<否>
- 更改成功如下:
2.下载华为集成开发环境 DevEco Device Tool Linux版本,目前最新版本号为3.1.0.200
HUAWEI DevEco Device Tool(以下简称DevEco Device Tool)是OpenHarmony面向智能设备开发者提供的一站式集成开发环境,支持OpenHarmony的组件按需定制,支持代码编辑、编译、烧录和调试等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。
- 直接在Ubuntu上打开firefox输入下载地址下载
- 解压DevEco Device Tool安装包,并对解压后的文件赋权
unzip devicetool-linux-tool-3.1.0.200.zip
chmod u+x devicetool-linux-tool-3.1.0.200.sh
-
安装DevEco Device
-
执行命令安装DevEco Device
sudo ./devicetool-linux-tool-3.1.0.200.sh
终端打印出这条信息说明安装成功
3.获取标准系统源码
执行命令sudo apt-get install git git-lfs
安装git客户端和git-lfs
- 配置git用户信息
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
git config --global credential.helper store
执行这个命令会在本地生成一个文本,上边记录配置。然后再拉取代码就不用再输入账号信息了。
- 进入gitee官网个人主页,个人头像下方就是user.name
-
再进入设置点击邮箱管理就可以得到你的your-email-address
-
安装gitee码云repo工具
sudo apt-get install curl
sudo curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo
sudo pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
- 使用repo+https下载发布Tag节点源码
创建源码存放目录
进入创建的源码存放目录,执行以下命令下载源码
sudo ln -sf /usr/bin/python3 /usr/bin/python
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v3.2-Beta1 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
如果要下载最新分支的代码则执行:
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
3.在源码目录下执行脚本安装编译器及二进制工具
下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony_2.0_canary_prebuilts下。
bash build/prebuilts_download.sh
如果执行bash build/prebuilts_download.sh出现以下warning,在源码/prebuilts/python/linux-x86/3.9.2/bin/执行python -m pip install --user --upgrade pip==22.3.1(22.3.1是要升级的版本号)
4.安装依赖工具
sudo apt-get install 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
如果安装了如上的依赖工具不行,执行以下语句安装最新的依赖工具
unix_time=`date '+%s'`;for one_tools in `curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list`;do echo "apt-get install -y ${one_tools}">>/tmp/openharmony_deps_${unix_time}.sh; done;sudo apt-get update;sudo bash -x /tmp/openharmony_deps_${unix_time}.sh
依赖工具列表 https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list
5.将python 3.8设置为默认python版本。
- 查看python 3.8的位置:
which python3.8
将python和python3切换为python3.8
sudo update-alternatives --install /usr/bin/python python {python3.8 路径} 1
sudo update-alternatives --install /usr/bin/python3 python3 {python3.8 路径} 1
6.最后测试一下OpenHarmony三方库编译环境
在源码根目录下执行编译命令
./build.sh --product-name rk3568 --ccache --build-target=要编译的部件名 --target-cpu arm64
#其中:--product-name rk3568 指定产品名为rk3568
#其中:--ccache 编译使用ccache
#其中:--target-cpu arm64 编译构建64位系统
在源码目录下执行编译zlib命令,生成libzlib.z.so
./build.sh --product-name rk3568 --ccache --build-target=zlib
编译生成了libzlib.z.so,编译环境没问题。
OpenHarmony环境重置
- 安装依赖包:
unix_time=
date ‘+%s’;for one_tools in
curl -s -k https://gitee.com/landwind/openharmony_oneclick_env_init/raw/master/apt_install.list;do echo "apt-get install -y ${one_tools}">>/tmp/openharmony_deps_${unix_time}.sh; done