本文介绍鸿蒙编译环境的搭建,以及本人在过程种遇到的坑;

官方网站的手册:
https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_environment_lin-0000001105407498

搭建Ubuntu

使用Windows10的WSL的Ubuntu子系统,网上有很多安装的分享,这里不做介绍,也可按照以下InsStep直接安装,默认安装是安装在系统盘下的,具体路径如下,所有Ubuntu的内容都在这个路径下。

C:\Users\username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs
  1. 打开设置->安全和更新->开发者选项,选择为“开发人员模式”;
  2. Win + R运行control appwiz.cpl指令,在启用或关闭Windows功能中勾选适用于Linux的Windows子系统和虚拟机平台两项启用,重启;
  3. 微软商店搜索Ubuntu安装,安装完毕直接启动并设置初始用户名密码便可以进入Ubuntu子系统;

这里介绍一下如何将安装好的Ubuntu子系统从系统盘迁移到指定的目录,本文将其迁移到D:\Ubuntu目录下。

Ubuntu子系统安装成功后,进行迁移操作,操作如下:

  1. 需要下载LxRunOffline,下载地址,下载文件LxRunOffline-v3.5.0-mingw.zip,然后解压到某个目录中
    在这里插入图片描述
  2. 设置环境变量,在系统变量Path中添加LxRunOffline解压的目录(.exe所在的目录)
    在这里插入图片描述
  3. 重启电脑,使环境变量生效
  4. Win + R运行cmd,输入LxRunOffline,如果显示下面的提示证明已经安装成功了在这里插入图片描述
  5. Win + R运行cmd,输入LxRunOffline list查看子系统版本在这里插入图片描述
  6. 复制上面的版本号,然后输入LxRunOffline move -n {version} -d {dir},{version}是版本号,{dir}是迁移目的目录,比如本文是20版本,迁移到D盘Ubuntu目录下,LxRunOffline move -n Ubuntu-20.04 -d D:\Ubuntu,然后回车,等待迁移完成,10分钟左右
    在这里插入图片描述
    这样就将Ubuntu的迁移到指定目录下
    在这里插入图片描述
    (由于ubuntu LTS版本的限制,导致编译速度贼慢,可以用VMware或者VMbox,进行ubuntu的搭建,设置处理器个数,编译一把大概5-6分钟)

安装必要的软件

完成Ubuntu的搭建后,根据官方提供的环境搭建文档https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_environment_lin-0000001105407498 进行安装软件包以及依赖的工具。

搭建基础环境
安装和配置Python
  1. 打开Linux编译服务器终端。
  2. 输入如下命令,查看python版本号,需使用python3.7以上版本。
python3 --version

由于我们安装的是Ubuntu20.0的版本,因此直接执行如下命令

sudo apt-get install python3.8
  1. 设置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
  1. 安装并升级Python包管理工具(pip3)
sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
安装gn

参照上述官方文档

安装ninja

参照上述官方文档

安装hc-gen

参照上述官方文档

安装LLVM

参照上述官方文档

安装hb

参照上述官方文档

安装Hi3516DV300依赖环境
将Linux shell改为bash

查看shell是否为bash,在终端运行如下命令

ls -l /bin/sh

如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:

sudo dpkg-reconfigure dash

(tip:注意这里是默认是dash而不是bash,不要看走眼了,还是需要更改的)

安装编译依赖基础软件(仅Ubuntu 20+需要)

执行以下命令进行安装:

sudo apt-get install build-essential && sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install make && sudo apt-get install zlib* && sudo apt-get install libffi-dev
安装文件打包工具
  1. 打开Linux编译服务器终端
  2. 运行如下命令,安装dosfstools
sudo apt-get install dosfstools
  1. 运行如下命令,安装mtools
sudo apt-get install mtools
  1. 运行如下命令,安装mtd-utils
sudo apt-get install mtd-utils
安装Java 虚拟机环境
  1. 打开Linux编译服务器终端
  2. 安装Java运行时环境(JRE)
sudo apt-get install default-jre
  1. 安装Java sdk开发工具包
sudo apt-get install default-jdk

编译鸿蒙主干代码

根据官方手册 https://device.harmonyos.com/cn/docs/start/get-code/oem_sourcecode_guide-0000001050769927 获取代码;

安装repo工具

安装码云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
主干代码的拉取

通过刚才安装的repo下载主干代码

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

环境搭建中遇到的问题

  1. 一般按照如上操作下来,不看走眼,依赖的工具和软件都是可以正常安装下来的;
  2. 在下载代码的时候会出现,faltal:early EOF,提示是失败的意思 在这里插入图片描述
    解决:这是由于引用的 kerel_linux的内容太多了,导致下载失败,可以在如下的xml文件中删除linux_kernel所在行
	.repo//manfest/default.xml
  1. 在编译中报错FAILED: libhota.so unstripped/usr/lib/libhota.so,如下图:
    在这里插入图片描述
    解决:这是由于在拉取代码的时候,只执行了如下拉取命令:
	repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
	repo sync -c

并没有执行如下命令:(只要再执行如下命令,再编译即可)

	repo forall -c 'git lfs pull'

4.在整个Hi3516DV300编译过程中,耗时会比较久,开始会在快编译完的时候卡很久,但是最终还是编译出内核、文件系统、用户代码;
在这里插入图片描述
编译出的bin文件
在这里插入图片描述
tip:这边提供下载Ubuntu环境工具包,如下:鸿蒙工具包

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐