温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

编译harmonyos的下载源码以及搭建环境过程

发布时间:2021-10-08 17:54:21 来源:亿速云 阅读:223 作者:柒染 栏目:系统运维

编译harmonyos的下载源码以及搭建环境过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1、环境搭建

编译鸿蒙的源码建议在Ubuntu20.04下进行,windows下会出现各种奇怪的问题,不建议使用。

1.1、VirtualBox 虚拟机安装

VirtualBox官网下载地址:https://www.virtualbox.org/

Ubuntu20.04官网下载地址:https://ubuntu.com/download/desktop

关于VirtualBox和Ubuntu的安装和使用就不展开了,百度一下资料很多。

1.2、改sh为bash

ls -l /bin/sh                   #如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:  sudo dpkg-reconfigure dash      #然后选择no

1.3、安装打包工具mkfs.vfat mtools

sudo apt-get install dosfstools mtools  #官方要求安装的2个工具  sudo apt-get install zip                #官方文档没写,但是rootfs过程需要  sudo apt-get install python3-distutils  #官方文档没写,但是build过程需要

1.4、下载安装编译工具gn ninja llvm hc-gen

hc-gen:鸿蒙驱动hdf框架之类的,用于生成鸿蒙驱动配置对应的文件

#下载gn/ninja/LLVM/hc-gen包: URL_PREFIX=https://repo.huaweicloud.com/harmonyos/compiler wget $URL_PREFIX/gn/1523/linux/gn.1523.tar wget $URL_PREFIX/ninja/1.9.0/linux/ninja.1.9.0.tar wget $URL_PREFIX/clang/9.0.0-34042/linux/llvm-linux-9.0.0-34042.tar wget $URL_PREFIX/hc-gen/0.65/linux/hc-gen-0.65-linux.tar wget $URL_PREFIX/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz #【可选】编译riscv需要,如wifiiot  #解压gn/ninja/LLM/hc-gen包: tar -C ~/ -xvf gn.1523.tar tar -C ~/ -xvf ninja.1.9.0.tar tar -C ~/ -xvf llvm-linux-9.0.0-34042.tar tar -C ~/ -xvf hc-gen-0.65-linux.tar tar -C ~/ -xvf gcc_riscv32-linux-7.3.0.tar.gz  #【可选】编译riscv需要,如wifiiot  #向~/.bashrc中追加gn/ninja/LLVM/hc-gen路径配置: cat <<EOF >> ~/.bashrc export PATH=~/build_tools/gn:\$PATH export PATH=~/build_tools/ninja:\$PATH export PATH=~/build_tools/llvm/bin:\$PATH export PATH=~/build_tools/hc-gen:\$PATH #export PATH=~/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin:\$PATH export PATH=~/gcc_riscv32/bin:\$PATH   #【可选】编译riscv需要,如wifiiot #export PATH=~/.local/bin:\$PATH EOF  #生效环境变量 source ~/.bashrc

1.5、安装python3.8和 pip

编译鸿蒙源码hi3861目标平台需要使用scons,默认安装的scons版本需要python版本>=3.7:

a、如果是ubuntu20.04,因为默认python是3.8,正好符合要求,只需要安装pip即可,可以进行第6步了。

sudo apt-get install python3-pip

注意:如果pip下载慢,配置pip包下载源,加速国内安装pip包:

mkdir~/.pip/ cat <<EOF > ~/.pip/pip.conf [global] index-url = https://mirrors.huaweicloud.com/repository/pypi/simple trusted-host = mirrors.huaweicloud.com timeout = 120 EOF

b、如果是其他版本,比如ubuntu18.04,默认Python3版本是 3.6,得先安装python3.8

sudo apt-get install python3.8 python3-pip  sudo apt-get install python3-pip

安装完成后,需要将默认python切换为3.8,比较麻烦的是多个python版本的管理,通常有两种方式:

方案一:使用virtualenv管理,单独source相应的active脚本切换当前shell会话的默认python版本

virtualenv管理多个python运行环境,不适用virtualenv的情况下,pip install 和 sudo pip  install的包会分别放到用户home目录和系统目录

安装virtualenv:

pip3 install virtualenv sudo apt install python3-virtualenv  #创建使用python3.8为默认python解释器的virtualenv mkdir ~/Harmony/venv && virtualenv -p python3.8 ~/Harmony/venv  #激活virtualenv,激活后的pip3 install会将包文件缓存到相应的子目录中 source ~/harmonyos/venv/bin/activate source ~/Harmony/.venv/bin/activate

方案二:使用update-alternatives管理,并切换全局Python脚本配置(不推荐,用完需要切换回去,否则会影响apt等依赖python3的软件包使用);

update-alternatives ,它是 Debian 系管理多版本软件的工具,不仅适用 Python ,而且还使用 Java  等各种有多版本共存需求的软件。 它跟 virtualenv 这种虚拟环境不同的是, update-alternatives 管理的是系统级的软件版本,  virtualenv 管理的是当前用户下的一个虚拟环境。

1.6、确定python的环境变量

方案一:使用【ln -s】,确定Python安装好后,运行如下命令,将python路径链接到"/usr/bin/python"。

which python3.8               #查看python3.8的安装位置     输出:/usr/bin/python3.8   #比如我的安装目录 cd /usr/bin                   #进入python的目录 sudo rm python                #删除python sudo ln -s /usr/local/bin/python3.8 python #将python链接到python3.8 python --version

方案二:sudo apt-get install python3-venv #安装venv虚拟环境

python3 -m venv .venv       #推荐进入项目的根目录再执行此命令 source .venv/bin/activate   #进入虚拟环境

其他工具安装

#安装setuptools和kconfiglib pip3 install setuptools kconfiglib  #安装编译hi3861需要的pip包 pip3 install scons ecdsa pycryptodome pip3 install --upgrade --ignore-installed six

2、下载源码

Ubuntu环境搭建完成之后开始下载源代码。

2.1、配置GIT

sudo apt install git git config --global user.name "liangzili" git config --global user.email "liangzili@qq.com" git config --global credential.helper store

2.2、安装码云repo工具,可以执行如下命令

sudo apt install curl curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo chmod a+x /usr/local/bin/repo       #设置repo文件 a+x就是全部用户可执行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

2.3、下载源码

repo是下载多个git库的python脚本,参考repo用法:https://blog.csdn.net/nwpushuai/article/details/78778602

repo init

-u #指定manifests这个远程git库的URL,manifests库是整个项目的清单,通常包含了default.xml这个文件

-b #指定manifest.xml文件中的一个版本,,也就是俗称的“分支”运行该命令后,会在当前目录下新建一个.repo子目录

repo sync

-j12 #开启多线程同步操作,这会加快sync命令的执行速度。默认情况下,使用4个线程并发进行sync

&ndash;no-repo-verify:在下载repo库时,会对repo的源码进行检查。通过&ndash;repo-url指定第三方repo库时,可能会导致检查不通过,所以可以配套使用该参数,强制不进行检查

-c,  &ndash;current-branch:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间

-d,  &ndash;detach:脱离当前的本地分支,切换到manifest.xml中设定的分支。在实际操作中,这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync,  则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败

sync -c #只同步指定的远程分支

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c  #以后每天同步远程仓的修改,只需要执行这一条命令即可  前期可以先锁定OpenHarmony-1.0版本,避免频繁升级带来的问题,树莓派的移植就是在OpenHarmony-1.0的分支上进行的  repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-1.0 repo sync -c -j12

2.4、编译测试

可以先执行官方编译命令测试下编译环境是否正常,编译完成后,主目录下会生成out的文件夹

-b debug 构建调试版本,如果没有这个参数,正常版本是无法进入shell的

python3 build.py ipcamera_hi3516dv300 -b debug python3 build.py ipcamera_hi3518ev300 -b debug python build.py wifiiot -b debug

3、启动流程

3.1、启动方式

树莓派自带BootLoader,引导SD卡上的镜像文件启动内核,可以使用树莓派自带的BootLoader直接启动内核,但是这样不方便我们调试代码。需要频繁的插拔SD卡。所以我是先通过BootLoader加载u-boot,然后通过u-boot的TFTP直接将内核的镜像加载到内存,这样在调试的时候,就不需要频发的插拔SD卡了。当调试结束,再拷贝镜像文件到SD卡,启动内核就可以了。

TFTP启动内核u-boot环境变量设置: setenv bootcmd "tftp 80000 OHOS_Image.bin;tftp 80000 OHOS_Image.bin;tftp 80000 OHOS_Image.bin;go 80000"  SD卡启动内核u-boot环境变量设置: setenv bootcmd "fatload mmc 0:1 100000 liteos.bin;fatload mmc 0:1 100000 liteos.bin;mw.l    0x10100000  ffffffff 1000000;fatload mmc 0:1 10100000 rootfs.jffs2;go 100000 - 10100000"

3.2、启动文件

OHOS_image_1.0这个文件夹中有我已经编译好的鸿蒙镜像,可以直接使用。

关于编译harmonyos的下载源码以及搭建环境过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI