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 切换效果,可以通过 Vue 的 router-view 和 <router-link> 来完成。这里我们使用 Vue Router 来创建一个标签页切换的效果。 步骤 1: 安装 Vue Router 如果还没有安装 Vue Router,首先需要安装它&#…...
WPF动画的使用
前言 弹幕是什么?这里是使用动画将控件弹起来,通过C#提供的多样化动画类型,我们可以制做出丰富的界面效果。主要有基于时间的动画和基于属性的动画。 1、Animatable 一个提供动画支持的抽象类。 继承 Object DispatcherObject Depende…...
跑腿代购app系统源码开发及功能分析
随着互联网技术的飞速发展和人们生活节奏的加快,跑腿代购服务作为一种便捷的生活方式,正逐渐渗透到我们日常生活的方方面面。从日常购物、餐饮外卖到文件传递、药品代购,跑腿服务以其高效、灵活的特点赢得了广大用户的青睐。而支撑这一服务高…...
mysql数据库:字符串函数
mysql数据库:字符串函数 mysql数据库:字符串函数 concat(str1,str2,…strn) 连接str1,str2,…,strn为一个字符串 select concat(abc,def)replace(str,a,b) 用字符串b替换str中所有出现的字符串a insert(str,x,y,instr…...
C语言实现游戏2048(超详细!!!超易懂!!!)
2048是众所周知的一款经典游戏,在曾经没有智能电脑和手机的年代,也陪伴了我们许多年。那今天就让我们用C语言来回顾一下这款游戏吧~ 一、游戏2048的思路 2048游戏的玩法是在初始的时候,给玩家一个4*4格子的,其中内容全为空的棋盘…...
MATLAB代码检查工具PolySpace
概述 PolySpace是MATLAB里面代码静态检查工具。通过检查源代码,可以确定可能在哪里发生潜在的运行时错误,例如算术溢出,缓冲区溢出等等。它最大的特点是可以检查车企常用的MISRA C标准,还免费,就让各大车企爱不释手。…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
