首页 > 其他分享 >【开源鸿蒙】OpenHarmony 5.0 轻量系统最小开发环境搭建

【开源鸿蒙】OpenHarmony 5.0 轻量系统最小开发环境搭建

时间:2024-11-10 21:22:52浏览次数:1  
标签:5.0 OpenHarmony repo com ckgw 源码 linux 轻量 下载

本文将会介绍,如何下载源代码和工具链,让磁盘占用尽可能小的同时,还可以进行轻量系统上的 OpenHarmony 开发(进行源码编译构建)。最终实现了将磁盘占用从完整源码的 67G 减少到了 15G,不到完整源码的四分之一磁盘占用!

一、写在前面——为什么写本篇内容
OpenHarmony 5.0 发布了,该版本系统带来了很多的新特性,与此同时,系统源码占用的磁盘空间也非常大。例如,使用 repo 命令从 gitee 下载 OpenHarmony 5.0 源代码,下载完成后,整个源码目录占用的磁盘空间约为 51GB。在此基础之上,执行 prebuilts_download.sh 脚本,下载编译工具链完成后,整个目录的磁盘占用达到了 67GB。

对于想要在轻量系统(mini system)体验 OpenHarmony 的同学来说,67GB 的磁盘占用是难以接收的。单片机点个灯而已,要下载 67G 的代码和工具?

OpenHarmony 官方对于系统的分类中写道:

轻量系统(mini system)

面向 MCU 类处理器例如 Arm Cortex-M、RISC-V 32 位的设备,硬件资源极其有限,支持的设备最小内存为 128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的 IOT 总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

轻量系统,基本上涵盖了 32 位的主流单片机。

二、准备工作——下载源码前的准备
2.1 准备基础环境
本节介绍基础软硬件环境的最低要求,包括 CPU、内存、硬盘和操作系统等。

磁盘空间:至少 100GB,推荐 1TB 及以上;

内存空间:至少 4GB,推荐 8GB 及以上;

CPU:x86_64 架构,至少 4 核,推荐 8 核及以上;

操作系统: Ubuntu 或 Debian

系统版本: 22.04(Ubuntu),10 (Debian)

其中操作系统可以是直接安装在物理机器上,也可以是虚拟机。如果使用的是虚拟机,需要注意给磁盘、内存、CPU 分配足够的资源。

2.2 准备命令行工具
本节主要介绍后续从 gitee 下载源码所需的工具,以及如何准备。

从 Gitee 下载 OpenHarmony 源码,需要用到 repo 和 git 两个命令行工具。其中,git 是分布式版本控制系统,可以通过 apt 包管理器下载和安装;repo 是基于 Python 脚本的多 git 仓管理工具,可以从 gitee 下载并安装(或设置)。

综上所述,首先需要安装 git 和 python 等命令:

sudo apt install git git-lfs python3-pip wget

其中,git-lfs 是 git 的大文件存储工具,部分代码仓用到了大文件存储,因此需要下载;wget 是后续我们需要使用到的命令行工具。

安装 repo 命令行工具,执行如下命令:

创建目录

mkdir ~/bin

下载repo脚本

curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo

下载repo依赖的软件包

pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

修改~/.profile文件,在最后追加:

export PATH=$HOME/bin:$PATH

实现修改 PATH 环境变量。

2.3 配置 git 用户信息
本节介绍如何配置本地 git 用户名和邮箱,以及如何配置码云 SSH 公钥(使用 ssh 协议下载必须配置):

注册 gitee 帐号;

设置 gitee 账号的 SSH 公钥和邮箱,具体操作参考gitee帮助中心;

配置本地的 git 用户信息,执行如下命令:

需要注意,邮箱要和 gitee 账号设置的邮箱一致。

创建目录,用于存放 OpenHarmony 源码,执行如下命令:

三、下载 OpenHarmony 轻量系统最小源码
3.1 使用 ssh 协议下载(推荐)
通过 repo + ssh 下载(需注册公钥,请参考码云帮助中心)。

从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。

从版本发布 Tag 节点获取源码。可获取与版本发布时完全一致的源码。

注意:这里repo init添加了-g 参数,用于指定后续repo sync时同步 git 仓的 groups 属性值,实现了下载更少源码仓,即最终磁盘占用更小的目的。

3.2 使用 https 协议下载
通过 repo + https 下载。

从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。

从版本发布 Tag 节点获取源码。可获取与版本发布时完全一致的源码。

注意:这里repo init添加了-g 参数,用于指定后续repo sync时同步 git 仓的 groups 属性值,实现了下载更少源码仓,即最终磁盘占用更小的目的。

四、下载 OpenHarmony 轻量系统构建工具
直接执行prebuilts_download.sh脚本可以下载所有当前平台的构建工具,其中大部分工具是用于构建“标准系统”时使用的,而构建“轻量系统”使用的工具非常少。

因此,为了减少磁盘空间占用,本节使用手动执行命令的方式下载轻量系统构建所需工具。

经实验,构建轻量系统(以 Hi3861 为例)需要使用到的工具仅有:

GN,Generate Ninja,可以生成 ninja,功能更强大;

ninja,轻量级构建工具,速度非常快;

交叉编译工具链,Hi3861 是 riscv32-gcc;

clang_llvm(用到了 llvm-objcopy 命令,但 riscv32-gcc 中也有类似的命令行工具);

4.1 下载并解压 GN 命令行工具
执行如下命令,下载并解压 GN 命令行工具:

export URL_PREFIX=http://repo.huaweicloud.com

创建放置目录

mkdir -pv prebuilts/build-tools/linux-x86/bin/

下载GN压缩包

wget $URL_PREFIX/openharmony/compiler/gn/20240510/gn-linux-x86-20240510.tar.gz

解压GN压缩包

tar -xvf gn-linux-x86-20240510.tar.gz -C prebuilts/build-tools/linux-x86/bin/

4.2 下载并解压 ninja 命令行工具
执行如下命令,下载并解压 GN 命令行工具:

export URL_PREFIX=http://repo.huaweicloud.com

下载ninja压缩包

wget $URL_PREFIX/openharmony/compiler/ninja/20240416/ninja-linux-x86-20240416.tar.gz

解压ninja压缩包

tar -xvf ninja-linux-x86-20240416.tar.gz -C prebuilts/build-tools/linux-x86/bin/

4.3 下载 clang/LLVM 编译工具链
执行如下命令,下载 clang/LLVM 编译工具链:

下载clang/LLVM压缩包

wget $URL_PREFIX/openharmony/compiler/clang/15.0.4-666b9b/linux/clang_linux-x86_64-666b9b-20240218.tar.gz

查看压缩包中文件列表:

tar -tvf clang_linux-x86_64-666b9b-20240218.tar.gz

解压clang/LLVM压缩包(到当前目录)

tar -xvf clang_linux-x86_64-666b9b-20240218.tar.gz

创建放置目录

mkdir -pv prebuilts/clang/ohos/linux-x86_64/

移动到prebuilts/clang/ohos/linux-x86_64目录,并重命名为llvm

mv clang_linux-x86_64-666b9b-20240218 prebuilts/clang/ohos/linux-x86_64/llvm

注: prebuilts 目录下的命令行工具是由hb命令调用的,不需要手动设置环境变量。

4.4 下载交叉编译工具链 RISC-V GCC
执行如下命令,下载并解压 RISC-V GCC 工具:

下载RISC-V GCC压缩包

wget $URL_PREFIX/openharmony/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

创建RISC-V GCC放置目录

mkdir -pv ~/ohos/toolchains/

解压RISC-V GCC压缩包

tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~/ohos/toolchains/

解压完成后,还需要手动修改/.profile文件(如果没有这个文件,则修改/.bashrc),向最后添加一行:

export PATH=~/ohos/toolchains/gcc_riscv32/bin:$PATH

完成修改后,关闭当前 shell 会话,重新打开新的 Shell 会话,环境变量的修改将会生效。

完成以上所有解压之后,可以将相应的压缩包删除掉。

下载、解压、删除完上述所有压缩包后,磁盘空间占用如下:

可以看到仅有 15G,不到 67G 的四分之一。

五、编译 OpenHarmony 轻量系统
5.1 安装 hb 命令行工具
OpenHarmony 源码使用hb命令进行构建,hb本身源码位于build/hb目录内。

在 OpenHarmony 源码的顶层目录下,执行如下命令,安装hb命令:

pip install build/hb/

如果已有之前版本的hb命令,安装之前,可以将其卸载掉再安装:

pip uninstall ohos-build

5.2 安装 Hi3861 SDK 所需的命令行工具
Hi3861 SDK 是使用scons构建的,需要scons命令,以及其他几个 pip 包。

【可选】执行后面的pip install之前,可以配置国内 pip 源,加速 pip 包安装(这里使用的是华为云镜像站,也可以使用其他镜像站):

pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip config set global.timeout 120
pip config set global.trusted-host repo.huaweicloud.com

ckgw.cdhgs.com
ckgw.borkjc.com
ckgw.huoyiyingshi.com
ckgw.chinachaiyao.com
ckgw.njhhcw.com
ckgw.kangshungcsl.com
ckgw.haixiaocdn.com
ckgw.jszcxny.com
ckgw.baiyichi.com
ckgw.chengducxwc.com
ckgw.seemlgo.com
ckgw.shyachao.com
ckgw.dhl-d.com
ckgw.tajqzl.com
ckgw.hzsunbyte.com
ckgw.tjzxjy.com
ckgw.qrpress.com
ckgw.zhanhao118.com
ckgw.marsdrinkschina.com
ckgw.xjlqcl.com
ckgw.5000news.com
ckgw.2500trip.com
ckgw.htsyfs.com
ckgw.hmgjjd.com
ckgw.tcccpsb.com
ckgw.hfsmttp.com
ckgw.nnlianbao.com
ckgw.xinchengabc.com
ckgw.njns56.com
ckgw.gzlcjzs.com
ckgw.xinlvchuang.com
ckgw.juanbanjicj.com
ckgw.tongtaijituan.com
ckgw.lydsmp.com
ckgw.shinenergygroup.com
ckgw.jingranchimian.com
ckgw.tj-shengming.com
ckgw.njxlkhs.com
ckgw.shzljr.com
ckgw.guanlinyouxuan.com
ckgw.ynyoutu.com
ckgw.jiadalong.com
ckgw.jumeizi.com
ckgw.zhs888.com
ckgw.cnaoxin.com
ckgw.afu365.com
ckgw.tzhyex.com
ckgw.xincaiit.com
ckgw.senmaohuanbao.com
ckgw.bjqunlemuye.com
ckgw.lxtxqh.com
ckgw.yuchentimes.com
ckgw.hebeihongqi.com
ckgw.ssyhmma.com
ckgw.hyl98.com
ckgw.youhezhixuan.com
ckgw.jilinsport.com
ckgw.wychyq.com
ckgw.gdhrgk.com
ckgw.jzha101.com
ckgw.lutuohb.com
ckgw.sgxinfeng.com
ckgw.bjyongxuan.com
ckgw.jxtrfund.com
ckgw.fyjyzsgs.com
ckgw.zgygzl.com
ckgw.clwzycgp.com
ckgw.wencfcw.com
ckgw.zmuoo.com
ckgw.xphysc.com

使用如下命令,安装 Hi3861 SDK 构建所需的命令行工具和 pip 包:

pip install scons kconfiglib pycryptodome six ecdsa

5.3 【可选】安装 ccache 命令行工具
安装 ccache 可以实现本地编译缓存,好处是重复编译构建速度会很快,缺点是会占用一定磁盘空间。

如果磁盘空间够用的话,推荐安装 ccache。

执行如下命令,安装 ccache:

sudo apt install ccache

5.4 编译 OpenHarmony 轻量系统(以 Hi3861 为例)
首先,执行hb set命令,选择产品,一次选择mini->hispark_pegasus_mini_system:

接着,执行hb build -f命令,进行构建,构建完成后可以看到如下输出:

可以看到,此时 Hi3861 固件的 bin 文件已经生成了:

elf 文件的代码段、数据段、BSS 段信息:

六、问题解决
6.1 找不到 libcoap 组件
【问题现象】执行hb build命令失败,有类似报错信息:“find component libcoap failed”,如下图:

【问题原因】5.0.0 Release 版本(tag 版本)中,third_party/libcoap仓不是ohos:mini分组,默认没有下载这个代码仓。

【解决方法】

手动修改.repo/manifests/ohos/ohos.xml文件,groups属性中添加一个ohos:mini,修改如下:

修改完成后,重新repo sync -c同步代码,将会下载该源码仓;

重新同步代码之后,重新hb build -f编译构建,将会成功;

6.2 不识别 libhistreaminglink.a 文件格式
【问题现象】执行hb build命令失败,有类似“libhistreaminglink.a: file format not recognized”的报错信息,如下图所示:

【问题原因】没有执行大文件同步命令(git lfs pull)导致的。排查过程:

【解决方法】执行命令:

repo forall -c 'git lfs pull'

6.3 找不到 xxx 命令
xxx 可能为 gn、ninja、riscv32-unknown-elf-gcc、scons,这属于一类问题,统一归为一类。

【问题现象】执行hb build命令失败,有类似“xxx: command not found”的报错。

【问题原因】PATH 环境变量中找不到对应的命令,使用which xxx进行测试,也找不到对应命令。

【解决方法】查看文章前面对应章节,仔细核对步骤是否有遗漏、错误,重新进行一遍通常可以解决。

6.4 导入包 xxx 失败
【问题现象】执行hb build命令失败,有 py 脚本的import语句报错的,例如:

【错误原因】Python 环境缺少相关包。

【解决方法】查看前面相关章节,找到pip install命令,重新执行一遍,对于 Hi3861 就是:

pip install scons kconfiglib pycryptodome six ecdsa

标签:5.0,OpenHarmony,repo,com,ckgw,源码,linux,轻量,下载
From: https://www.cnblogs.com/bkbk123/p/18538508

相关文章

  • VMware Tanzu CLI 1.5.0 - VMware Kubernetes 发新版的命令行工具
    VMwareTanzuCLI1.5.0-VMwareKubernetes发新版的命令行工具VMware构建、签名和支持的开源Kubernetes容器编排平台的完整分发版请访问原文链接:https://sysin.org/blog/vmware-tanzu-cli/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTanzu命令行......
  • [ThinkPHP]5.0.23-Rce 1
    [ThinkPHP]5.0.23-Rce1根据题目知道这是一个5.0.23的PHPRCE,话不多说直接上扫描器检测出Payloadurl地址:?s=captcha&test=-1Post表单参数:_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1HackBar构造payload,访问成功执行到phpinfo页面ct......
  • 鸿蒙next5.0版开发:ArkTS组件点击事件详解
    在HarmonyOS5.0中,ArkTS提供了一套完整的组件和事件处理机制,使得开发者能够创建交互性强的应用程序。本文将详细解读如何使用ArkTS组件处理点击事件,包括事件的注册、回调函数的编写以及事件对象的使用。点击事件基础点击事件是用户与应用交互的基本方式之一。在ArkTS中,点击......
  • YoloV10改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码
    论文介绍CARAFE模块概述:本文介绍了一种名为CARAFE(Content-AwareReAssemblyofFEatures)的模块,它是一种用于特征上采样的新方法。应用场景:CARAFE模块旨在改进图像处理和计算机视觉任务中的上采样过程,特别适用于目标检测、实例分割、语义分割和图像修复等任务。目标:通过......
  • 听说你的轻量服务器在吃灰?来看看这些技巧
    刚从校园踏入社会的时候,我也有过一股热情,迫不及待地购买了一台服务器,心想拥有自己的服务器一定非常酷。然而,现实总是充满挑战,工作中的大部分时间都被用来修复各种bug,而自己在服务器管理方面的知识和经验又相当匮乏,导致这台服务器几乎成了摆设,整整一年都没有得到充分利用,最终......
  • 一种增稳加速直连 Github Steam Pixiv 等网站的全新轻量化方案 (Sheas Cealer 开发两
    由于法律风险和敏感性,本文不探讨使用代理或者混淆作为解决方案,而是研究一种更加合法合规和轻量化的无代理直连方案来加速部分网站的访问,在结尾处我编写了一个简单易用的开源桌面端程序,运用本文介绍的原理来实现部分网站的加速,如果你对原理部分不感兴趣,也可以直接跳至结尾处看我写......
  • 鸿蒙开发进阶(OpenHarmony)DAC模拟信号
    鸿蒙NEXT开发实战往期必看文章:一分钟了解”纯血版!鸿蒙HarmonyOSNext应用开发!“非常详细的”鸿蒙HarmonyOSNext应用开发学习路线!(从零基础入门到精通)HarmonyOSNEXT应用开发案例实践总结合(持续更新......)HarmonyOSNEXT应用开发性能优化实践总结(持续更新......)功能简介......
  • 有哪些免费的轻量级在线 CRM 系统?6款CRM系统盘点
    对于许多中小型企业和初创公司而言,如何选择一款既能满足日常需求又具性价比的CRM系统很重要。通常来说,系统的成本是企业选型过程中不可忽视的因素,但在这么多的CRM系统中,各类CRM系统的功能与价格对比真的很容易让人眼花缭乱。本文将盘6款值得关注的免费轻量级在线CRM系统,包括简道......
  • OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示
    当打开蓝牙后没有反应时,需要排查蓝牙节点是否对应、固件是否加载成功,本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法,触觉智能SBC3568主板演示,搭载了瑞芯微RK3568芯片,应用可覆盖边缘计算、人工智能、工业HMI、工业网关、智慧医疗、自助终端、智能零售、能源电力等行业。修改......
  • Multi-Scale and Detail-Enhanced Segment Anything-1-LMSA-轻量级多尺度适配器
    `importtorch.nnasnnimporttorchimporttorch.nn.functionalasFclassModifyPPM(nn.Module):definit(self,in_dim,reduction_dim,bins):super(ModifyPPM,self).init()self.features=[]forbininbins:self.features.append(nn.Sequential(nn.Adaptive......