当前位置: 首页 > 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调用,而无需开发者显式调用。它们通常用于执行一些特殊的操作&…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...