首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-16 20:41
  • 2734
  • 8659
blog.csdn.net

目录

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
  1. mkdir ~/.pip
  2. pip3 config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
  3. pip3 config set global.trusted-host mirrors.huaweicloud.com
  4. pip3 config set global.timeout 120

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

4.3配置Git和repo

1.注册码云gitee帐号。

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

3.配置用户信息。

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

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

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

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

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

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

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

  1. vim ~/.bashrc # 编辑环境变量
  2. export PATH=~/bin:$PATH # 在环境变量的最后添加一行repo路径信息
  3. 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解释器
  1. #设置默认Python解释器
  2. sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
  3. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
  4. python --version

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

5.拉取源码
5.1创建存储源码的文件夹
  1. mkdir openharmony4.0
  2. cd openharmony4.0
5.2拉取源码(repo+ssh)
  1. repo init -u [email protected]:openharmony/manifest.git -b master --no-repo-verify
  2. repo sync -c
  3. 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查看内存,内存变化即为设置成功!

  1. [wsl2]
  2. memory=7GB
  3. swap=7GB
  4. 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

注:本文转载自blog.csdn.net的PlumCarefree的文章"https://blog.csdn.net/MuZiChunChun/article/details/140457394"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top