绝对成功:HarmonyOS 4.0鸿蒙源码下载和编译

目录

1.摘要

2.前提条件

3.Ubuntu的准备

3.1安装

3.2迁移

4.下载前的配置

4.1Shell 改 Bash

4.2安装 GIt 和 pip3

4.3配置Git和repo

4.4 安装下载工具集

4.5设置python解释器

5.拉取源码

5.1创建存储源码的文件夹

5.2拉取源码(repo+ssh)

6.编译源码

6.1Ubuntu内存设置

6.2方法一:导入编译好的Ubuntu

6.3方法二:本地编译Ubuntu

7.常见问题

7.1 3000错误

7.2 4000错误

7.3 Samba服务

7.4 参考文档


1.摘要

近期需要使用鸿蒙源码,下载比较容易,但发现编译存在各种各样的问题,主要是报3000、4000的错误,网上文章参差不齐,解决问题的过程当中也花费较长时间,特此写下这篇笔记。

本文提供HarmonyOS 4.0的下载和编译方法,其中下载主要通过repo+SSH进行下载。

编译笔者提供两种方法编译到rk3568上,第一种方法是笔者直接提供编译好的Ubuntu网盘链接(通过WSL2直接导入已经编译好的Ubuntu-20.04),第二种方法是通过命令本地进行编译,本地编译花费大约4小时左右。第一种方法,简单、快速,直接规避了问题,第二种方法,可以体验一下漫长的编译过程,哈哈,反复报Error人都麻了。

笔者主推第一种编译方法,如果读者使用第一种编译方法,只需要阅读第6节内容即可,因为各种配置和依赖已经提前安装完毕,不必再进行下载,只需导入Ubuntu压缩包,然后二次执行编译命令验证即可。

---------------------------------------------------------------------------------------------------------------------------------

2.前提条件

虚拟环境:WSL2(推荐)、VMware、VirtualBox

Ubuntu版本:Ubuntu-20.04(推荐)、Ubuntu-18.04

Windows系统:win10(推荐)、win11

存储:内存最少8G,越高越好,官方推荐16G,外存140G,注意把Uunbu迁移到系统盘之外

---------------------------------------------------------------------------------------------------------------------------------

3.Ubuntu的准备

如果读者已经提前安装好了Ubuntu,这一步可以省略

3.1安装

快速使用WSL2安装Ubuntu,参照笔者之前的文章,提供了WSL2和Ubuntu的安装方法,文章中是下载22.04,注意换成20.04

快速使用WSL2安装Ubuntu-CSDN博客

3.2迁移

使用WSL2安装的Ubuntu默认装在C盘,注意迁移到其他盘,C盘搞爆了就不好玩了。下面这篇文章当中是安装的22.04版本的,注意换成20.04版本

快速迁移WSL2上的Ubuntu-CSDN博客

---------------------------------------------------------------------------------------------------------------------------------

4.下载前的配置

以下命令均在Ubuntu中执行

4.1Shell 改 Bash
sudo dpkg-reconfigure dash

执行命令后选择 No

---------------------------------------------------------------------------------------------------------------------------------

4.2安装 GIt 和 pip3

Git是版本控制工具,pip3是python的包管理工具

sudo apt install git git-lfs python3-pip curl
mkdir ~/.pip
pip3 config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
pip3 config set global.trusted-host mirrors.huaweicloud.com
pip3 config set global.timeout 120

---------------------------------------------------------------------------------------------------------------------------------

4.3配置Git和repo

1.注册码云gitee帐号。

2.注册码云SSH公钥,请参考码云帮助中心,里面有SSH是否配置成功验证方法,主要验证一下,否则后续拉取源码是出现问题。

3.配置用户信息。

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

4.安装码云repo工具,下述命令中的安装路径以"~/bin"为例

mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo 
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

5.将repo添加到环境变量,两种方法二选一。

方法一:建议直接执行一条命令

echo 'export PATH=~/bin:$PATH' >> ~/.bashrc && source ~/.bashrc

方法二:通过vim编辑,不知道vim的,忽略此方法

vim ~/.bashrc               # 编辑环境变量
export PATH=~/bin:$PATH     # 在环境变量的最后添加一行repo路径信息
source ~/.bashrc            # 应用环境变量

---------------------------------------------------------------------------------------------------------------------------------

4.4 安装下载工具集

这里分四步下载编译工具集,因为有坑

第一步:

sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev   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 genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

第二步:

sudo apt-get install gcc-multilib g++-multilib

第三步:若您使用的是Ubuntu20及以上版本,由于gcc-multilib和gcc-arm-linux-gnueabi互斥,请勿安装gcc-arm-linux-gnueabi,否则执行以下命令,默认版本。

sudo apt-get install gcc-arm-linux-gnueabi

第四步(若第三步版本太低):若您使用的是Ubuntu20及以上版本,由于gcc-multilib和gcc-arm-linux-gnueabi互斥,请勿安装gcc-arm-linux-gnueabi,否则执行以下命令,版本9。

sudo apt-get install gcc-9-arm-linux-gnueabi

---------------------------------------------------------------------------------------------------------------------------------

4.5设置python解释器
#设置默认Python解释器
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
python --version

---------------------------------------------------------------------------------------------------------------------------------

5.拉取源码
5.1创建存储源码的文件夹
mkdir openharmony4.0
cd openharmony4.0
5.2拉取源码(repo+ssh)
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

三条命令执行成功后,执行命令ls,即可查看当前源码根目录下的文件,如下图,out文件夹是编译输出文件夹,未编译则没有

---------------------------------------------------------------------------------------------------------------------------------

6.编译源码
6.1Ubuntu内存设置

内存的多少直接决定了编译是否成功!!!

1.查看内存:可以在Ubuntu根目录下执行如下命令查看内存,可以看到我的内存是7G,交换空间也是7G,如果不自行手动配置内存的话,默认只有4G左右,完全不够用。7G对方法一(导入已经编译好的Ubuntu)再次执行编译,足够使用,对于方法二本地编译是不够的。

官方推荐的内存是至少12G

free -m

2.配置内存

快捷键:win+R ,输入 %UserProfile%

新建 .wslconfig 文件,这里有个点,注意注意注意

写入如下配置信息,一般内存和交换空间1:1即可,如果内存够大的话,往上填,根据自己的电脑来填就好了,然后保存后,通过wsl --shutdown命令结束虚拟机服务,然后过8秒后,再次打卡Ubuntu,通过free -m查看内存,内存变化即为设置成功!

[wsl2]
memory=7GB
swap=7GB
localhostForwarding=true

---------------------------------------------------------------------------------------------------------------------------------

6.2方法一:导入编译好的Ubuntu

1.提取网盘中已经编译好的Ubuntu-22.04(130G),下载到自己的目标位置,比如在D盘新建文件夹Ubuntu_WSL,就会有如下路径 D:\Ubuntu_WSL

链接:https://pan.baidu.com/s/1OHtXMAI9lnsGjSBLyOHWAw 
提取码:1234

2.导入在你想要将Ubuntu分发版存放的新位置(如D盘的`Ubuntu_WSL`文件夹)中,使用`wsl --import Ubuntu-新名称 <目标路径> <.tar文件路径>`命令来导入之前导出的分发版。注意,这里的“Ubuntu-新名称”可以与你之前导出的分发版名称相同,也可以不同。以下命令仅为示例,请替换成自己的实际路径,笔者的压缩包名称是Ubuntu.tar,导入需要一段时间,请耐心等待。这里发行版名字可以随便取

wsl --import Ubuntu-20.04 D:\Ubuntu_WSL D:\Ubuntu_WSL\Ubuntu.tar

3.导入成功后执行命令进行启动Ubuntu

wsl -d Ubuntu-20.4

4.进入到Ubuntu即为root用户,这里没有设置指定用户,需要设定可自行设定,我们查看目录看看

5.再次编译验证,大约1小时

sudo ./build.sh --product-name rk3568 --ccache

---------------------------------------------------------------------------------------------------------------------------------

6.3方法二:本地编译Ubuntu

在源码根目录下面执行命令,全程4-6小时,看机子性能,编译结果文件及编译日志文件获取路径:out/rk3568,在源码根目录执行prebuilts脚本,然后编译

bash build/prebuilts_download.sh
sudo ./build.sh --product-name rk3568 --ccache

如果不指定设备,可以直接编译源码,编译结果文件在 out/sdk/ohos-sdk文件夹里,可以看见两个子文件夹windows和linux,在windows文件夹里的toolchains里,可以看到hdc_std.exe

sudo ./build.sh --product-name ohos-sdk

编译成功后,在源码根目录下,执行cd out,切换到out文件夹,再执行ls,查看编译文件,如下

---------------------------------------------------------------------------------------------------------------------------------

7.常见问题
7.1 3000错误

源码拉取并没有太大问题,一般依赖下载不完整就会再编译过程当中出现Warnning,提示什么包没有安装完整,注意本文第4.4节的编译工具链,继续编译后,就大概率出现3000的错误,出现错误后,下载相关依赖,然后在源码根目录下手动清除out文件夹,再次执行编译命令即可

rm -rf out
7.2 4000错误

通过查看ninjia.py这个源文件,可以发现这里的catch语句其实是捕获了很多的异常,就是无法具体定位是什么异常,4000是个笼统的错误。但是,我们发现4000出现的主要原因在于电脑的内存不够用。

7.3 Samba服务

方便使用VSCode编写代码,我们在这里为了简化下载和编译流程,省略安装Samba服务,可以在编译成功后再安装

7.4 参考文档

准备开发环境 (openharmony.cn)

编译构建指导 (openharmony.cn)

Issues · OpenHarmony/build - Gitee.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值