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

OpenHarmony编译

简介:本文将会介绍编译OpendHarmony环境的搭建、编译、和刷机(rk3568)

使用场景:修改系统源码,需要验证修改的功能是否正确、编译镜像、编译SDK

1、VS Code,下载链接,用于修改源码

2、linux环境搭建 用于编译源码

3、DevEco Studio,zh-cn/release-notes/Readme.md · OpenHarmony/docs - Gitee.com 用于验证修改的源码

4、hdc命令配置,环境变量 path里增加路径 sdk的toolchains目录路径。sdk位置参考第八点

一,linux环境搭建

安装linux系统:最好是ubuntu 20.04.6 没有的话,安装20.04.2,创建好用户及密码

系统安装好后,需要将源替换成阿里源

sudo vim /etc/apt/sources.list

按"Insert"键进入编辑模式,将里面的内容清空,把下面的内容复制进去:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

更新缓存和升级:

sudo apt-get update

二,安装MobaXterm_Personal_22.1、samba

在windows上安装MobaXterm_Personal_22.1,可在百度上搜索下载,也可飞书找我要

安装完成后,配置如下

以上截图是为了window保持与linux连接不被中断,如果在下载代码或者编译过程中中断,那么linux的工作也将被中断,所以windows要保持连接且不可待机 关机

建立连接 如图:

点击ok后输入 密码建立连接,连接成功后,左侧会出现一定的目录,但不是我截图的这样,会是原始目录

linux安装samba工具,以便从window的映射盘直接读取资源

参考连接 :

https://www.jb51.net/server/291322elw.htm

path路径就是windows映射的路径

samba安装好后,在windows上按 win+r键

运行后:在红框处右键 映射网络驱动器

三,利用MobaXterm_Personal_22.1工具 在linux安装git、git-lfs、repo工具,以供下载源码使用

1,安装git

sudo apt install git-all

配置git,并生成密钥,将公钥放在gittee上 请参考码云帮助中心

git config --global user.name "yourname"

git config --global user.email "your-email-address"

git config --global credential.helper store

2,安装git-lfs,下载二进制大文件使用

sudo apt install curl

sudo apt install python3-pip

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

sudo apt-get install git-lfs

git lfs install

3,安装repo: ~代表当前用户根目录

mkdir ~/bin

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

chmod a+x ~/bin/repo

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

vim ~/.bashrc # 编辑环境变量

export PATH=~/bin:$PATH # 在环境变量的最后添加一行repo路径信息

source ~/.bashrc # 应用环境变量

,利用MobaXterm_Personal_22.1工具 在linux上准备编译环境,(头铁的可以不加下面这些依赖,如果编译失败,还是乖乖的加上吧)

linux安装依赖工具:

1.sudo apt install aptitude

2.sudo aptitude 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-cross 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 device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen 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 libncurses5-dev libncursesw5 libstdc++6 vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

3.sudo apt install gcc-arm-none-eabi libtinfo-dev libtinfo5 genext2fs liblz4-tool libssl-dev openjdk-8-jre

4.sudo apt-get update

5.sudo apt install default-jdk

6.sudo apt install mtd-utils

7.sudo apt install scons

8.sudo apt install gcc-arm-none-eabi

9.sudo apt install gcc-arm-linux-gnueabi

10.sudo apt-get install libssl-dev

11.sudo apt-get install genext2fs

,利用MobaXterm_Personal_22.1工具 在linux上下载源码

#在当前用户目录下新建一个代码仓目录,可以写当前日期如:0523,cd 0523 并执行以下命令初始化仓库

#可使用repo + ssh :repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify初始化

#也可使用repo + https:repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify初始化,推荐使用https,因为方便查看下载中断错误

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify

#更新文件 -j28为使用28个线程同步代码,最大32,如果网速不好,最好去掉 -j28,

repo sync -c -j28

#更新lfs 文件

repo forall -c 'git-lfs pull'

#预编译

build/prebuilts_download.sh

#编译rk3568镜像

./build.sh --product-name rk3568 --ccache

#编译SDK

./build.sh --product-name ohos-sdk --gn-args full_mini_debug=false

六,下载源码可能会被中断,或者某个git仓库被意外中断

例如错误:

error: RPC 失败。curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.

error: RPC 失败。curl 56 GnuTLS recv error (-54): Error decoding the received TLS packet.

1.此类似错误可能是由于git缓存不够,或者网速不稳定,或者是网速不好同时开启线程多导致,如果是线程多引起,则去掉第五点中的 -j28,如果是缓存和网速引起,则使用以下命令:

sudo apt-get install gnutls-bin

git config --global http.sslVerify false

git config --global http.lowSpeedLimit 0

git config --global http.lowSpeedTime 999999

git config --global http.postBuffer 5000000000 #设置5个G的缓存

2.如果执行上面还是下载中断,接着执行下面这句压缩代码传输,

git config --global core.compression 9 压缩代码传输

#git config --global --unset core.compression 命令可恢复默认设置

3.如果还中断:修改mtu值 ifconfig可以查看enp1s0的具体叫什么,每个电脑不一样

sudo chmod 777 /sys/class/net/enp1s0/mtu

sudo echo "9000" > /sys/class/net/enp1s0/mtu

查看mtu值

cat /sys/class/net/enp1s0/mtu

重启网卡enp1s0

sudo ip link set dev enp1s0 down

sudo ip link set dev enp1s0 up

4.如果还是中断,尝试更新curl

sudo apt update

sudo apt upgrade curl

5,如果还是下载中断,可能是由于白天使用网络的人数多,可以试试写个自动化定时脚本,让脚本在晚上下载代码并编译,源码代码量比较大,上百个G,编译过后更是达到几百个G,注意磁盘空间,网速会瞬间撑满宽带,注意别下载别的东西

,vscode连接linux代码

1,安装插件 Remote SSH

此工具用于连接linux代码,具体参考以下网址:

https://blog.csdn.net/m0_60607289/article/details/138987450

最终配置文件如下:

Host 10.50.80.57

HostName 10.50.80.57

User xxxx(linux登录的名字)

Port 22

ForwardAgent yes

2 安装插件C++以便代码点击跳转,必须基于第一步成功的基础之上

,linux编译后的产物路径,替换sdk可用上面的samba映射盘操作

1,rk3568镜像位置:

linux位置(以下out目录均指linux目录):out/rk3568/packages/phone/images/

2,sdk位置:

4个目录位置 ets 、js、previewer、 toolchains

out/sdk/ohos-sdk/windows/

1个native子目录位置 :native\sysroot\usr(本地windows sdk位置)

out/sdk/sdk-native/os-irrelevant/sysroot/usr/

当sdk编译好后,需要将DevEco的Openharmony SDK以上5个目录替换 ,注意 native不是全部替换,是native\sysroot\usr下的两个目录替换

DevEco的Openharmony SDK 查看位置 File->setting->Openharmony SDK

还可以直接5个目录全部替换

out/sdk/packages/ohos-sdk/windows/

,开发板烧录镜像

1、下载安装烧写所需驱动与工具

从该链接下载烧写所需驱动和工具

驱动及工具在该路径下:docs-master\HiHope_DAYU200\烧写工具及指南\windows

安装USB驱动

双击windows\DriverAssitant\DriverInstall.exe安装USB驱动。

导入配置文件

双击\windows\RKDevTool.exe打开烧写工具,鼠标右键选择导入配置,从前面下载的日构建镜像目录中选择config.cfg导入

注意:首次导入时,对着空白处 右键清空所有配置,1、需将烧写工具里的路径正确配置成日构建镜像所在的路径;2、右键选择导入配置,替换原工具路径下的config.cfg文件。路径可以直接用映射盘的路径

2、烧写

开发板连接电源,USB线连接PC

切换到LOADER模式烧写

按住板子上的Recovery键,然后按一下reset键,待工具界面显示LOADER设备后,松开Recovery键,设备进入loader模式,点击执行开始烧写,如图:

右边出现“下载完成字样”,即代表烧写完成,等待板子重启

相关文章:

OpenHarmony编译

简介:本文将会介绍编译OpendHarmony环境的搭建、编译、和刷机(rk3568) 使用场景:修改系统源码,需要验证修改的功能是否正确、编译镜像、编译SDK 1、VS Code,下载链接,用于修改源码 2、linux环…...

C语言典型例题30

《C程序设计教程(第四版)——谭浩强》 习题2.7 从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少个月能还清。 设d30000元,p6000元,r1%。对求得的月份取小数点后一位,对第二…...

springMVC @RestControllerAdvice注解使用方式

使用 RestControllerAdvice 的主要场景包括: 全局异常处理:处理所有控制器中抛出的未捕获异常。数据校验失败处理:处理 Bean Validation 校验失败的情况。自定义响应:统一定义响应格式或错误信息。 RestControllerAdvice 注解的…...

HarmonyOS鸿蒙开发岗位面试中关于组件的问题总结

文章目录 1. 鸿蒙组件的基本概念2. 组件的使用3. 布局管理4. 组件间通信5. 组件化开发6. 性能优化7. 实战应用 鸿蒙应用开发岗位面试中关于鸿蒙组件的问题,通常会涉及多个关键知识点,这些知识点涵盖了鸿蒙组件的基本概念、使用、布局管理、性能优化、组件…...

Unity 在Editor下保存对Text组件的文本的修改

Unity 在Editor下保存对Text组件的文本的修改 /****************************************************文件:TimeStampForText.cs作者:lenovo邮箱: 日期:2024/8/8 1:9:21功能: *************************************************…...

mysql 日志爆满,删除日志文件,定时清理日志

今天发现网站不能正常访问,于是登陆服务器查找问题。 机智的我随手用命令:df -l 发现 硬盘爆满了,于是就知道问题所在了。 Filesystem 1K-blocks Used Available Use% Mounted on/dev/xvda1 20641404 16963004 16929876 10…...

MySQL学习(19):锁

1.什么是锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,数据是供许多用户共享的资源,数据库必须保证数据并发访问的一致性、有效性,这就要靠锁来协调实现。 MySOL中的锁,分为以下三类: &am…...

【出海日记】关于 KD ,数据工具的陷阱

一个关键词:deepwoken builder 对标的竞品:deepwoken.co 初步分析: https://ahrefs.com/keyword-difficulty/?countryus 显示这个关键词优化难度极低 拿流量的是一个内页,单靠这个内页一个月有 22 万的流量 看起来很香&#x…...

【k8s集群部署篇】在openEuler环境下部署多master高可用kubernetes集群详细教程(V1.30版本)

【k8s集群部署篇】在openEuler环境下部署多master高可用kubernetes集群详细教程(V1.30版本) 一、相关名词介绍1.1 k8s简介1.2 Keepalived简介1.3 HAProxy简介二、本次实践介绍2.1 环境规划介绍2.2 本次实践简介三、所有节点基础环境配置3.1 主机配置工作3.2 关闭防火墙和seli…...

数据结构:链表经典算法OJ题

目录 前言 一、移除链表元素 二、反转链表 三、合并两个有序链表 四、链表的中间节点 五、环形链表的约瑟夫问题 前言 在了解了链表的相关知识后,我们还需要一些题目进行练习加深对链表这方面知识的理解,也可以用来检测链表这块学的的怎么样&#…...

【线性代数】【二】2.2 极大线性无关组与向量空间的基

文章目录 前言一、极大线性无关组二、向量空间的基三、向量维数与向量空间维数总结 前言 上一篇中我们介绍了向量空间的概念,并且学习了对任意给出的一组向量,如果构造一个向量空间。本文将更加细致的去分析张成一个向量空间,具有哪些性质。…...

OD C卷 - CPU算力分配

CPU算力分配 两组服务器A、B, 每组有多个算力不同的CPU;为了让两组服务器的算力和相等,允许两组各选出一个CPU进行一次交换;求两组中用于交换的CPU算力,从A中选出的算力尽可能小; 输入描述: 第一行 输入L…...

matlab实现红绿灯识别

在MATLAB中实现红绿灯识别通常涉及图像处理技术,包括颜色分割、形态学操作、边缘检测等步骤。下面我将给出一个基本的框架和示例代码,用于在MATLAB中识别图像中的红绿灯。 步骤 1: 读取图像 首先,你需要有一张包含红绿灯的图像。 img imr…...

base64 转 pdf

工作中经常会遇到一些签名的pdf传输,一般都是base64编码,这样就需要我们手动转为pdf, 其实根本不需要自己使用pdf的库写入,只是数据的简单写入就行 package mainimport ("encoding/base64""fmt""os&quo…...

vue2项目微信小程序的tabs切换效果

在 Vue 2 项目中实现类似微信小程序的 tabs 切换效果&#xff0c;可以通过 Vue 的 router-view 和 <router-link> 来完成。这里我们使用 Vue Router 来创建一个标签页切换的效果。 步骤 1: 安装 Vue Router 如果还没有安装 Vue Router&#xff0c;首先需要安装它&#…...

WPF动画的使用

前言 弹幕是什么&#xff1f;这里是使用动画将控件弹起来&#xff0c;通过C#提供的多样化动画类型&#xff0c;我们可以制做出丰富的界面效果。主要有基于时间的动画和基于属性的动画。 1、Animatable 一个提供动画支持的抽象类。 继承 Object DispatcherObject Depende…...

跑腿代购app系统源码开发及功能分析

随着互联网技术的飞速发展和人们生活节奏的加快&#xff0c;跑腿代购服务作为一种便捷的生活方式&#xff0c;正逐渐渗透到我们日常生活的方方面面。从日常购物、餐饮外卖到文件传递、药品代购&#xff0c;跑腿服务以其高效、灵活的特点赢得了广大用户的青睐。而支撑这一服务高…...

mysql数据库:字符串函数

mysql数据库&#xff1a;字符串函数 mysql数据库&#xff1a;字符串函数 concat(str1,str2,…strn) 连接str1&#xff0c;str2&#xff0c;…&#xff0c;strn为一个字符串 select concat(abc,def)replace(str,a,b) 用字符串b替换str中所有出现的字符串a insert(str,x,y,instr…...

C语言实现游戏2048(超详细!!!超易懂!!!)

2048是众所周知的一款经典游戏&#xff0c;在曾经没有智能电脑和手机的年代&#xff0c;也陪伴了我们许多年。那今天就让我们用C语言来回顾一下这款游戏吧~ 一、游戏2048的思路 2048游戏的玩法是在初始的时候&#xff0c;给玩家一个4*4格子的&#xff0c;其中内容全为空的棋盘…...

MATLAB代码检查工具PolySpace

概述 PolySpace是MATLAB里面代码静态检查工具。通过检查源代码&#xff0c;可以确定可能在哪里发生潜在的运行时错误&#xff0c;例如算术溢出&#xff0c;缓冲区溢出等等。它最大的特点是可以检查车企常用的MISRA C标准&#xff0c;还免费&#xff0c;就让各大车企爱不释手。…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

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

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

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...