Ubuntu22.04 搭建 OpenHarmony 命令行开发环境
文章目录
- 简介
- 安装工具链
- 获取gitee源码
- 安装编译工具
- 编译测试
简介
在本文中,我们将介绍如何使用命令行工具在你的设备上安装OpenHarmony操作系统。OpenHarmony是一个开源的、面向物联网(IoT)设备的操作系统,它提供了一套全面的开发框架,使得开发者可以更容易地创建和部署IoT应用。
在本次安装中,使用的电脑是基于Ubuntu22的物理机器,按照官方文档的说明,优先推荐的方式是使用 DevEco Studio 进行开发,这种方式使用Windows 做前端,Linux 虚拟机作为编译后端,对于Linux 不熟悉的新手来说比较友好,与此同时也限制了使用的环境,例如 DevEco Device Tool 目前无法在Ubuntu22 上安装成功,因为 Ubuntu22 中默认的 Python 版本是3.10,Python版本不匹配,我尝试修改 DevEco Device Tool 中的部分文件并跳过完整性检查,依然无法安装。
相比使用GUI的方式,我更习惯使用命令行进行编译,简单高效,且灵活度更高,Linux有很多的发行版本,Ubuntu 在国内普通用户使用的最多的,同时也是最受欢迎的版本,但并不是每一个人都会使用Ubuntu,想要再 Ubuntu22 或者其他Linux 系统上编译,这应该是唯一的选择,由用户自己来解决依赖的缺失问题。
安装工具链
- 默认情况下,Ubuntu中使用的脚本解释器是dash(终端输入ls -l /bin/sh查看链接文件指向的位置),输入如下指令选择No,需要将其替换为bash
sudo dpkg-reconfigure dash
- 使用如下apt-get命令安装后续操作所需的库和工具:
sudo apt-get update && sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib gcc-arm-linux-gnueabi libc6-dev-i386 libc6-dev-amd64 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.10 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.10-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 git git-lfs
- 将Python3.10设置为Python与Python3的默认版本
which python3.10 # 查看python3.10的位置
sudo update-alternatives --install /usr/bin/python python {Python 3.10 路径} 1
sudo update-alternatives --install /usr/bin/python3 python3 {Python 3.10 路径} 1
获取gitee源码
- 首先需要下载gitee的repo工具:
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o repo
chmod a+x repo
sudo mv repo /usr/bin/
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
- OpenHarmony主干代码获取:
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
- 在源码根目录下执行prebuilts脚本,安装编译器及二进制工具:
bash build/prebuilts_download.sh
安装编译工具
- 在源码根目录运行如下命令安装hb并更新至最新版本:
python3 -m pip install --user build/hb
- 设置环境变量:
echo "export PATH=~/.local/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc
- 按照官方的说法,在源码目录执行"hb help",界面打印以下信息即表示安装成功:
[OHOS INFO] ----------------------------------------------------------------------------------------------------
[OHOS INFO] usage: hb build [option]
[OHOS INFO]
[OHOS INFO] options:
[OHOS INFO] -h, --help show this help message and exit
[OHOS INFO] --target-cpu {arm,arm64,x86_64,x64}
[OHOS INFO] Default:''. Help:Specifies the desired cpu architecture for the build, each may support different cpu architectures, run 'hb set --all' to list product all supported cpu architectures
[OHOS INFO] --target-os {android,ios}
[OHOS INFO] Default:''. Help:Specifies the desired os type for the build, each may support different os type, run 'hb set --all' to list product all supported os type
[OHOS INFO] -p PRODUCT_NAME, --product-name PRODUCT_NAME
[OHOS INFO] Default:''. Help:Build a specified product. You could use this option like this: 1.'hb build --product-name rk3568@hihope' 2.'hb build --product-name rk3568'
...
- 下面是我尝试编译时遇到的问题,找不到Mapping
[OHOS ERROR] Traceback (most recent call last):
[OHOS ERROR] File "/home/lhq/software/OpenHarmony/build/hb/containers/status.py", line 47, in wrapper
[OHOS ERROR] return func(*args, **kwargs)
[OHOS ERROR] File "/home/lhq/software/OpenHarmony/build/hb/main.py", line 112, in main
[OHOS ERROR] module = main._init_set_module()
[OHOS ERROR] File "/home/lhq/software/OpenHarmony/build/hb/main.py", line 83, in _init_set_module
[OHOS ERROR] from services.menu import Menu
[OHOS ERROR] File "/home/lhq/software/OpenHarmony/build/hb/services/menu.py", line 25, in <module>
[OHOS ERROR] from prompt_toolkit.shortcuts import run_application
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/__init__.py", line 16, in <module>
[OHOS ERROR] from .interface import CommandLineInterface
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/interface.py", line 19, in <module>
[OHOS ERROR] from .application import Application, AbortAction
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/application.py", line 8, in <module>
[OHOS ERROR] from .key_binding.bindings.basic import load_basic_bindings
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/basic.py", line 9, in <module>
[OHOS ERROR] from prompt_toolkit.renderer import HeightIsUnknownError
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/renderer.py", line 11, in <module>
[OHOS ERROR] from prompt_toolkit.styles import Style
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/styles/__init__.py", line 8, in <module>
[OHOS ERROR] from .from_dict import *
[OHOS ERROR] File "/home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py", line 9, in <module>
[OHOS ERROR] from collections import Mapping
[OHOS ERROR] ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
[OHOS ERROR]
[OHOS ERROR] Code: 0000
[OHOS ERROR]
[OHOS ERROR] Reason: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
[OHOS ERROR]
[OHOS ERROR] Solution: no solution
[OHOS ERROR]
这是由于Python3.10中collections中已经不再包含Mapping,需要将 /home/lhq/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py 中的 第9行进行替换:
from collections import Mapping # 原有代码
from collections.abc import Mapping # 替换后的代码
编译测试
- 设置编译路径并选择需要编译的目标
hb set
- 输入后系统类型选择 small
- 目标板选择 qemu_small_system_demo
- 编译
hb build
- 输出如下信息即代表编译成功
[OHOS INFO] --------------------------------------------
[OHOS INFO] ccache summary:
[OHOS INFO] ccache version: 4.5.1
[OHOS INFO] cache hit (direct): 18
[OHOS INFO] cache hit (preprocessed): 24
[OHOS INFO] cache miss: 18
[OHOS INFO] hit rate: 70.00%
[OHOS INFO] miss rate: 30.00%
[OHOS INFO] Cache size (GB): 4.96 / 100.00 (4.96 %)
[OHOS INFO] ---------------------------------------------
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem files NO. percentage builds NO. percentage overlap rate
[OHOS INFO] arkui 178 3.9% 178 3.9% 1.00
[OHOS INFO] communication 295 6.5% 295 6.5% 1.00
[OHOS INFO] graphic 34 0.8% 34 0.8% 1.00
[OHOS INFO] hdf 232 5.1% 232 5.1% 1.00
[OHOS INFO] hiviewdfx 14 0.3% 14 0.3% 1.00
[OHOS INFO] kernel 2169 48.0% 2169 48.0% 1.00
[OHOS INFO] powermgr 1 0.0% 1 0.0% 1.00
[OHOS INFO] security 308 6.8% 308 6.8% 1.00
[OHOS INFO] startup 113 2.5% 113 2.5% 1.00
[OHOS INFO] systemabilitymgr 22 0.5% 22 0.5% 1.00
[OHOS INFO] thirdparty 1119 24.7% 1119 24.7% 1.00
[OHOS INFO] window 18 0.4% 18 0.4% 1.00
[OHOS INFO]
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO]
[OHOS INFO]
[OHOS INFO] qemu_small_system_demo build success
[OHOS INFO] Cost time: 0:00:16
相关文章:
Ubuntu22.04 搭建 OpenHarmony 命令行开发环境
文章目录 简介安装工具链获取gitee源码安装编译工具编译测试 简介 在本文中,我们将介绍如何使用命令行工具在你的设备上安装OpenHarmony操作系统。OpenHarmony是一个开源的、面向物联网(IoT)设备的操作系统,它提供了一套全面的开…...
10.27 知识总结(前端)
一、 前端 1.1 什么是前端? 前端是所有跟用户直接打交道的都可以称之为是前端 比如:PC页面、手机页面、平板页面、汽车显示屏、大屏幕展示出来的都是前端内容 通俗点就是能够用肉眼看到的都是“前端” 1.2 为什么要学前端 学了前端以后我们就可以做全栈工…...
操作系统(02326)考试题库
博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 单选题多选题主观题 单选题 把并发进程中与共享变量有关的程序段称为…...
LeetCode题:70爬楼梯,126斐波那契数
目录 70:爬楼梯 题目要求: 解题思路:(类似斐波那契数) 递归解法: 非递归解法: 126:斐波那契数 题目要求: 解题思路: 递归解法: 非递归解…...
VTK OrientationMarker 方向 三维坐标系 相机坐标轴 自定义坐标轴
本文 以 Python 语言开发 我们在做三维软件开发时,经常会用到相机坐标轴,来指示当前空间位置; 坐标轴效果: 相机方向坐标轴 Cube 正方体坐标轴 自定义坐标轴: Code: Axes def main():colors vtkNamedC…...
工控安全与网络安全有什么不同?
在当代,全球制造业正在经历一场前所未有的技术变革。工业4.0不仅代表着自动化和数据交换的进步,它还揭示了工业自动化、智能制造与系统集成的融合。这种集成为企业带来了效率和质量的双重提升,但同时也暴露出新的安全隐患。工控系统成为了这一…...
性能测试工具:Jmeter介绍
JMeter是一个开源的Java应用程序,由Apache软件基金会开发和维护,可用于性能测试、压力测试、接口测试等。 1. 原理 JMeter的基本原理是模拟多用户并发访问应用程序,通过发送HTTP请求或其他协议请求,并测量响应时间、吞吐量、并发…...
Golang Struct 继承的深入讨论和细节
1)结构体可以使用嵌套匿名结构体所有的字段和方法,即:首字母大写或者小写的字段、方法,都可以使用。 type A struct {Name stringage int }func (a *A) SayName() {fmt.Println("A say name", a.Name) }func (a *A) s…...
Android11分区介绍
1.分区汇总 3566及3568分区对应如下: rockdev/Image-rk3566_rgo/ ├── boot.img ├── dtbo.img ├── MiniLoaderAll.bin ├── misc.img ├── parameter.txt ├── recovery.img ├── super.img ├── uboot.img └── vbmeta.img 2.分区说明 分区 说明 boo…...
goland无法调试问题解决
goland 无法调试问题解决 golang 版本升级后,goland 无法进行调试了 首先请看自己下载的版本是否有误 1.apple系 M系列芯片的 arm64版本 2.apple系 intel系列芯片的x86_64 3.windows系 intel解决如下: 查看gopath ericsanchezErics-Mac-mini gww-api…...
关于近期IP-Guard新版本客户端重复发送邮件的问题处理说明
关于近期新版本客户端重复发送邮件的问题处理说明 一、问题描述 近期部分客户反馈,升级到新版本的客户端(4.81.341.0、4.82.621.0及以上),使用SMTP协议发送邮件时,会出现重复发送邮件的情况,主要表现为以下两种现象: Outlook发送包含大量收件人的邮件时,收件人邮箱可能…...
linux java 启动脚本
#!/bin/sh## java env #export JAVA_HOME/data/jdk1.8.0_121 #export JRE_HOME$JAVA_HOME/jre## service name #当前目录 SERVICE_DIR$(cd dirname $0; pwd) echo "$SERVICE_DIR" #jar包路径 JAR_DIRls -ltr $SERVICE_DIR/*.jar| tail -1 echo "JAR_DIR $JAR_DI…...
Node.js 的 CommonJS ECMAScript 标准用法
目录 一、前言二、CommonJS 标准使用方法 三、ECMAScript 标准使用方法 四、常用命令总结 一、前言 本文主要是介绍 Node.js 的 CommonJS & ECMAScript 标准用法 如果对你有帮助,欢迎三连 收藏点赞关注!!! ---- NickYoung 二、…...
Mysql数据库 4.SQL语言 DQL数据查询语言 查询
DQL数据查询语言 从数据表中提取满足特定条件的记录 1.单表查询 2.多表查询 查询基础语法 select 关键字后指定要查询到的记录的哪些列 语法:select 列名(字段名)/某几列/全部列 from 表名 [具体条件]; select colnumName…...
俄罗斯黑客利用Roundcube零日漏洞窃取政府电子邮件
导语:最近,一起涉及Roundcube Webmail的零日漏洞被俄罗斯黑客组织Winter Vivern利用,攻击了欧洲政府机构和智库。这一漏洞已经存在至少一个月,直到10月16日,Roundcube开发团队才发布了安全补丁来修复这个Stored Cross-…...
【Javascript】ajax(阿甲克斯)
目录 什么是ajax? 同步与异步 原理 注意 写一个ajax请求 创建ajax对象 设置请求方式和地址 发送请求 设置响应HTTP请求状态变化的函数 什么是ajax? 是基于javascript的一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下,…...
Spring MVC的常用注解
目录 RequestMapping 例子: RequestMapping 支持什么类型的请求 使 RequestMapping 只支持特定的类型 RestController 通过 HTTP 请求传递参数给后端 1.传递单个参数 注意使⽤基本类型来接收参数的情况 2.传递多个参数 3.传递对象 4.RequestParam 后端参数…...
vim 使用文档笔记
1. i:进入编辑模式 2. ESC:进入一般命令模式 3. h 或 ←:光标向左移动一个字符 4. j 或 ↓:光标向下移动一个字符 5. k 或 ↑:光标向上移动一个字符 6. l 或 →:光标向右移动一个字符 7. num…...
274. H 指数
文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析1.1 方案一1.2 方案二 2、时间复杂度3、代码详解3.1 方案一3.2 方案二 三、本题小知识 一、题目 1、题目描述 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论…...
0基础学习PyFlink——用户自定义函数之UDTAF
大纲 UDTAFTableAggregateFunction的实现累加器定义创建累加 返回类型计算 完整代码 在前面几篇文章中,我们分别介绍了UDF、UDTF和UDAF这三种用户自定义函数。本节我们将介绍最后一种函数:UDTAF——用户自定义表值聚合函数。 UDTAF UDTAF函数即具备了…...
2026中级注册安全工程师全套备考资料|零基础直接上岸(讲义+视频+真题+押题)
很多备考注安的同学都踩过坑:资料杂乱、版本老旧、视频断断续续、考点找不到重点、整理资料耗费大量时间!为了帮大家省去筛选、找资源、整理笔记的时间,我全套整理好了2026最新中级注安备考大礼包,四科全覆盖、零基础可用、直接打…...
【负荷预测】基于LSTM-KAN的负荷预测研究(Python代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
从零开始通过Taotoken平台文档快速完成首个大模型API调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从零开始通过Taotoken平台文档快速完成首个大模型API调用 对于初次接触大模型API的开发者而言,面对众多模型厂商、复杂…...
ITK-SNAP医学图像分割:从临床需求到精准分析的完整指南
ITK-SNAP医学图像分割:从临床需求到精准分析的完整指南 【免费下载链接】itksnap ITK-SNAP medical image segmentation tool 项目地址: https://gitcode.com/gh_mirrors/it/itksnap 面对复杂的医学影像数据,你是否曾为如何准确提取关键解剖结构而…...
GPU Burn压力测试实战指南:企业级GPU稳定性验证解决方案
GPU Burn压力测试实战指南:企业级GPU稳定性验证解决方案 【免费下载链接】gpu-burn Multi-GPU CUDA stress test 项目地址: https://gitcode.com/gh_mirrors/gp/gpu-burn 在当今高性能计算和人工智能应用日益普及的背景下,GPU稳定性已成为企业数据…...
深入GD32 CAN FD驱动层:从寄存器配置到ISO 15765协议栈的实战解析
深入GD32 CAN FD驱动层:从寄存器配置到ISO 15765协议栈的实战解析 在车载电子与工业控制领域,CAN FD协议正逐步取代传统CAN总线,成为高速数据传输的新标准。GD32系列MCU凭借其出色的性价比和丰富的外设资源,成为许多嵌入式开发者的…...
数字孪生-三维重建-透明建筑-以智能管控为价值
透明建筑的核心透明建筑,本质上不是 “玻璃造房子”,而是以三维重构为骨架、以空间连续为逻辑、以全域可视为目标、以智能管控为价值的新一代数字孪生空间形态。它的核心可以浓缩为四句话:1. 空间可视核心:打破物理遮挡࿰…...
终极PC游戏分屏解决方案:Universal Split Screen完全指南
终极PC游戏分屏解决方案:Universal Split Screen完全指南 【免费下载链接】UniversalSplitScreen Split screen multiplayer for any game with multiple keyboards, mice and controllers. 项目地址: https://gitcode.com/gh_mirrors/un/UniversalSplitScreen …...
TSL2561高精度光照传感器在可穿戴设备中的集成与应用指南
1. 项目概述:为可穿戴设备注入“视觉”在智能硬件和物联网项目里,让设备“看见”环境光,是实现人机环境智能交互的第一步。无论是根据环境亮度自动调节屏幕的智能手表,还是能感知昼夜变化自动调整工作模式的园艺监测设备ÿ…...
82、【Agent】【OpenCode】bash 工具提示词(amend 风险)
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 上篇 blog 【Agent】【OpenCode】bash 工…...
