当前位置: 首页 > news >正文

鸿蒙OpenHarmony

开源鸿蒙系统编译指南

  • Ubuntu编译环境配置
    • 第一步:Shell 改 Bash
    • 第二步:安装Git和安装pip3工具
    • 第三步:远程仓配置
    • 第四步:拉取代码
    • 第五步:安装编译环境
    • 第六步:本地编译源码
  • Windows开发环境配置
    • 第一步:在Ubuntu编译环境上安装SSH服务
    • 第二步:在Windows开发环境上安装Remote SSH客户端
    • 第三步:开发环境远程连接编译环境

使用Ubuntu的编译环境对OpenHarmony鸿蒙源码进行编译,在Windows环境中将编译出来的固件烧录到开发板上。

在这里插入图片描述

Ubuntu编译环境配置

Ubuntu环境实际使用环境:
Ubuntu 22.04.4 LTS
内存:64G
另外,用的CPU E5-2697 v2@2.70GHz*24,编译完成不到1个小时吧

第一步:Shell 改 Bash

1、在Ubuntu的终端窗口中执行sudo dpkg-reconfigure dash,出现如下页面:
在这里插入图片描述
2、在页面中使用方向按键选择"否"或No,回车确认会自动退出。

第二步:安装Git和安装pip3工具

Git是版本控制工具,pip3是python的包管理工具
1、安装Git

sudo apt install git git-lfs python3-pip curl

2、安装pip3

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

第三步:远程仓配置

鸿蒙的源码放在码云服务器上,需要先申请码云gitee的自有账号,这里只介绍部分过程。
1、SSH 公钥设置
根据官网指导文档生成SSH公钥,再设置账户SSH公钥。
这里需要注意的是测试SSH环境时,再Linux终端中,首次执行 ssh -T git@gitee.com 时,出现如下结果,直接输入yes跳过。
在这里插入图片描述
再次执行 ssh -T git@gitee.com,才会出现和gitee官网相同的结果,这一点官方可能是选择性忽略,或许没有自测到此场景。
2、配置git的用户信息

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

3、下载安装码云的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

4、配置repo环境变量
在终端中执行 vim ~/.bashrc 命令编辑环境变量,在环境变量文件的最后一行添加repo的安装路径:

export PATH=~/bin:$PATH  # 这里的repo在~/bin下安装,也可以安装在其他路径下

执行 source ~/.bashrc 使该环境变量生效。

第四步:拉取代码

1、在新建的空文件夹中,准备拉取源码。这里下载到了 /xxx/openharmony4.0

mkdir /xxx/openharmony4.0

2、拉取源码

cd /xxx/openharmony4.0          # 1.进入到新建的文件下
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify    # 2.初始化仓库
repo sync -c     # 3.开始同步代码

获取鸿蒙代码结束后,如下文件列表:
在这里插入图片描述

第五步:安装编译环境

1、通过以下步骤安装编译OpenHarmony需要的库和工具。

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 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.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

说明:
(1)若使用Ubuntu20及以上版本,由于gcc-multilib和gcc-arm-linux-gnueabi互斥,请勿安装gcc-arm-linux-gnueabi,直接执行上述命令即可。
(2)若使用Ubuntu18.04,需要继续执行 sudo apt-get install gcc-arm-linux-gnueabi

  • Python要求安装Python 3.8及以上版本,此处以Python 3.8为例。
  • Java要求java8及以上版本,此处以java8为例。

2、设置默认python版本
查看Python 3.8的安装路径 which python3.8,这里的路径是 /usr/bin/python3.8

# 设置默认Python解释器
sudo update-alternatives --install /usr/bin/python python {默认Python路径} 1
sudo update-alternatives --install /usr/bin/python3 python3 {默认Python路径} 1
# 例如:
# 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

第六步:本地编译源码

1、在源码根目录下执行prebuilts脚本
bash build/prebuilts_download.sh
在这里插入图片描述
2、开始编译源码
指定编译类型为rk3568,编译结果文件及编译日志文件获取路径:out/rk3568
sudo ./build.sh --product-name rk3568 --ccache
不指定类型,直接编译源码,编译结果文件在 out/sdk/ohos-sdk文件夹里
sudo ./build.sh --product-name ohos-sdk

Windows开发环境配置

一般情况下,大多数人都会在Windows环境下开发调试烧录,这就需要Windows和Ubuntu交互和传输文件,这就需要配置远程访问环境。

第一步:在Ubuntu编译环境上安装SSH服务

一般情况下,只要用其他远程(MobaXterm)工具能通过SSH服务登录,就可以忽略不执行此步骤。
在Ubuntu系统中,打开终端工具,执行如下命令安装SSH服务并启动。

sudo apt-get install openssh-server   # 安装openssh-server
sudo systemctl start ssh      # 启动SSH服务

第二步:在Windows开发环境上安装Remote SSH客户端

打开Windows系统下的Visual Studio Code工具,点击插件管理模块,在插件市场的搜索并安装“remote-ssh”插件。
在这里插入图片描述

第三步:开发环境远程连接编译环境

1、打开Remote Explorer。
2、新建远程连接。
3、输入“ssh user@host-or-ip”或者"user@domain@host-or-ip"后回车确认。其中host-or-ip为要连接的远程计算机的IP地址或者host名称,user为登录远程计算机的帐号。注意:这里的user和host-or-ip均是编译环境已经配置过的账号。
在这里插入图片描述
4、在弹出的输入框中,选择SSH configuration文件,选择默认的第一选项即可。
在这里插入图片描述
5、根据自己的习惯选择两种链接方式之一
在这里插入图片描述
6、在弹出的输入框中,根据远程环境的类型,选择Linux/Windows/MacOs,然后输入登录远程计算机的user的密码,确认回车开始连接远程计算机。
在这里插入图片描述
这是成功连接的正常状态。
在这里插入图片描述
7、如图找到远程环境中的源码后,点击"OK" ,可以打开远程源码进行编辑调试。
在这里插入图片描述

相关文章:

鸿蒙OpenHarmony

开源鸿蒙系统编译指南 Ubuntu编译环境配置第一步:Shell 改 Bash第二步:安装Git和安装pip3工具第三步:远程仓配置第四步:拉取代码第五步:安装编译环境第六步:本地编译源码 Windows开发环境配置第一步&#x…...

把白底照片变蓝色用什么软件免费 批量更换证件照底色怎么弄

作为专业的修图师,有时候也会接手证件照修图和换底色工作,这种情况下,需要换底色的照片也许达到上百张。为了提高工作效率,一般需要批量快速修图,那么使用什么软件工具能够给各式不同的照片批量更换背景色呢&#xff1…...

Spring之生成Bean

Bean的生命周期:实例化->属性填充->初始化->销毁 核心入口方法:finishBeanFactoryInitialization-->preInstantiateSingletons DefaultListableBeanFactory#preInstantiateSingletons用于实例化非懒加载的bean。 1.preInstantiateSinglet…...

笔记整理—linux进程部分(6)进程间通信、alarm和pause

两个进程间通信可能是任何两个进程间的通信(IPC)。同一个进程是在同一块地址空间中的,在不同的函数与文件以变量进程传递,也可通过形参传递。2个不同进程处于不同的地址空间,要互相通信有难度(内存隔离的原…...

Java网络通信—UDP

0.小记 1.udp通信不需要建立socket管道,一边只管发,一边只管收 2.客户端:将数据(byte)打包成包裹(DatagramPacket),写上地址(IP端口),通过快递站&…...

k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理

clusterIP作为k8s中的服务, 也是其他三个服务的基础 ~]$ kubectl create service clusterip externalname loadbalancer nodeport 客户端的流量到service service分发给pod,pod由控制器自动部署,自动维护 那么问题是service的可用…...

vue框架和uniapp框架区别

文章目录 vue框架和uniapp框架区别一、引言二、Vue.js 概述1、Vue.js 简介1.1、特点 2、适用场景 三、Uni-app 概述1、Uni-app 简介1.1、特点 2、适用场景 四、区别与比较1、跨平台能力2、开发体验3、性能优化4、社区和支持 五、总结 vue框架和uniapp框架区别 一、引言 在前端…...

828华为云征文 | 华为云Flexus云服务器X实例搭建Zabbix网络设备监视系统(Ubuntu服务器运维)

前言 Flexus X实例内嵌智能应用调优算法,性能强悍,基础模式GeekBench单核及多核跑分可达同规格独享型实例的1.6倍,性能模式更是超越多系列旗舰型云主机,为企业业务提供强劲动力。 💼 Flexus X Zabbix:打造…...

JAVA基础-线程(Thread)、多线程(Multi-threaded)

1、知识铺垫 要想了解什么是线程,首先要搞明白线程与进程的区别,并行与并发的区别 1.1 线程与进程 进程:是指⼀个内存中运⾏的应⽤程序,每个进程都有⼀个独⽴的内存空间,⼀个应⽤程序可以同时运⾏多个进程&#xff1b…...

hystrix微服务部署

目录 一.启动nacos和redis 1.查看是否有nacos和redis 二.开始项目 1.hystrix1工程(修改一下工程的注册名字) 2.运行登录nacos网站查看运行效果(默认密码nacos,nacos) 3.开启第二个项目 hystrix2工程 4.关闭第二个项目 hyst…...

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制,个性飞扬二、多元风格,创意无限 百度文心智能体平台为你开启。百度文心智能体平台,创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台,集成了先进的自然语言处理技术和人工智能技术&…...

【嵌入式裸机开发】智能家居入门3(MQTT服务器、MQTT协议、微信小程序、STM32)

前面已经写了两篇博客关于智能家居的,服务器全都是使用ONENET中国移动,他最大的优点就是作为数据收发的中转站是免费的。本篇使用专门适配MQTT协议的MQTT服务器,有公用的,也可以自己搭建 前言一、项目总览二、总体流程分析1、了解…...

css的背景background属性

CSS的background属性是一个简写属性,它允许你同时设置元素的多个背景相关的子属性。使用这个属性可以简化代码,使其更加清晰和易于维护。background属性可以设置不同的子属性。 background子属性 定义背景颜色 使用background-color属性 格式&#x…...

Cypress自动化测试实战:构建高效的前端测试体系

在快速迭代的软件开发环境中,前端自动化测试是保证代码质量和用户体验的重要手段。Cypress作为一款功能强大的前端自动化测试工具,凭借其丰富的特性、直观的API和高效的测试执行速度,赢得了众多开发者和测试团队的青睐。本文将深入探讨Cypres…...

【YOLO学习】YOLOv2详解

文章目录 1. 概述2. Better2.1 Batch Normalization(批归一化)2.2 High Resolution Classifier(高分辨率分类器)2.3 Convolutional With Anchor Boxes(带有Anchor Boxes的卷积)2.4 Dimension Clusters&…...

windows 录音编码为flv格式时,pcm采样格式

这里使用的是0x3e,转换为二进制: 0 0 1 1 1 1 1 0 前四个字节为3,表示Linear Pcm, 后4个字节1 1 1 0 表示44100HZ采样, 16个bit,单声道。 故,windows 音频采样不支持48000HZ频率...

Qt开发技巧(九)去掉切换按钮,直接传样式文件,字体设置,QImage超强,巧用Qt的全局对象,信号槽断连,低量数据就用sqlite

继续讲一些Qt开发中的技巧操作: 1.去掉切换按钮 QTabWidget选项卡有个自动生成按钮切换选项卡的机制,有时候不想看到这个烦人的切换按钮,可以设置usesScrollButtons为假,其实QTabWidget的usesScrollButtons属性最终是应用到QTabWi…...

51c自动驾驶~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/11466109 #HTCL 超过所有视觉方案!HTCL:分层时间上下文问鼎OCC 本文是对ECCV2024接受的文章 HTCL: 的介绍,HTCL在SemanticKITTI基准测试中超过了所有基于相机的方法,甚至在和…...

Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

作者:席翁 Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助! Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称,定位于一个更易于构建云原…...

PHP魔幻(术)方法

PHP中的魔幻方法,也被称为魔术方法(Magic Methods),是一组具有特殊功能的方法。这些方法在PHP中有固定的名称,并且会在特定的时机自动被PHP调用,而无需开发者显式调用。它们通常用于执行一些特殊的操作&…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...