OpenHarmony编译

news2024/9/21 5:19:23

简介:本文将会介绍编译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模式,点击执行开始烧写,如图:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“低代码”平台的机遇与挑战

低代码平台的机遇 提高开发效率: 低代码平台通过提供可视化的开发工具和可重用的组件,显著提高了开发效率。开发者能够更快速地构建和部署应用,迅速响应市场需求。据普遍观点,低代码平台能够提升30%以上的开发效率,而无…

记一次用户认证代码重构中设计模式及设计原则的使用

目录 一、需求二、初始代码 - 上来就怼三、重构1 - 单一职责(方法级)四、重构2 - 单一职责(类级、策略模式)、简单工厂五、重构3 - 依赖注入(避免重复创建对象)六、重构4 - 使用Map替代if...else、享元模式…

AI浪潮下的程序员命运:消失还是进化?

随着人工智能技术的迅猛发展,程序员职业正面临着前所未有的挑战与机遇。在这个变革的时代,程序员们究竟该如何应对,才能在AI浪潮中乘风破浪,开创属于自己的朝阳之路呢? 程序员这一职业正迎来前所未有的变革&#xff0…

DC-9靶机渗透测试

DC-9靶机 文章目录 DC-9靶机信息收集web渗透后台渗透用户横向移动权限提升靶机总结 信息收集 扫描目标主机存在的端口信息 存在80和22端口 看来思路应该不会有太大变化了,但是ssh端口是处于过滤的状态 进行漏洞扫描也没扫描出有可以利用的 但知道了一些界面 web渗透…

沪深300股指期货如何操作套期保值?

沪深300股指期货的套期保值是一种重要的风险管理工具,用于对冲投资组合面临的市场风险。 以下是套期保值流程的详细步骤说明: 第一,评估套保需求:投资者首先需要基于对市场走势的深入分析和对投资组合的细致评估,确定…

python-flask-上传多个文件并存储

本地环境:win10 / centos6 , python3 flask入门看这里: ↓ python-flask结合bootstrap实现网页小工具实例-半小时速通版_bootstrap flask-CSDN博客 https://blog.csdn.net/pxy7896/article/details/137854455 动态添加和删除表格中的行&…

论文概览 |《Urban Analytics and City Science》2024.07 Vol.51 Issue.6

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2024年7月第51卷第6期的论文的题目和摘要,一共包括16篇SCI论文! 论文1 Digital twins on trial: Can they actually solve wicked societal problems and chan…

[开端]JAVA抽象类使用到redis观察着

一、绪论 当redis内容发生变化时需要通知一些观察者做一些动作怎么做? 二、JAVA抽象类 public abstract class AbstractRedisChangeListener {public abstract void change(String key, String value, String crudType); }使用abstract进行修饰一个类 其中抽象类…

数字信号处理2: 离散信号与系统的频谱分析

文章目录 前言一、实验目的二、实验设备三、实验内容四、实验原理五、实验步骤1.序列的离散傅里叶变换及分析2.利用共轭对称性,设计高效算法计算2个N点实序列的DFT。3.线性卷积及循环卷积的实现及二者关系分析4.比较DFT和FFT的运算时间5.利用FFT求信号频谱及分析采样…

【机器学习】(基础篇三) —— 损失函数和梯度下降

损失函数 损失函数(Loss Function),也称为代价函数(Cost Function)或误差函数(Error Function),是机器学习和深度学习中一个核心的概念。它用于量化模型预测与实际目标之间的差异&a…

有序转化数组(LeetCode)

题目 给你一个已经 排好序 的整数数组 和整数 、 、 。对于数组中的每一个元素 ,计算函数值 ,请 按升序返回数组 。 解题 在时间复杂度为解决问题 def sortTransformedArray(nums, a, b, c):def f(x):return a * x * x b * x cn len(nums)result…

配置Mysql的慢查询日志

一、什么是Mysql慢查询日志 MySQL慢查询日志是MySQL数据库自带的一个功能,用于记录执行时间超过指定阈值的SQL语句,以便于后续的性能优化工作 帮助开发和DBA发现哪些SQL语句需要优化,在哪些地方需要修改,以提高数据库的性能 默认…

【Hot100】LeetCode—51. N 皇后

原题链接:51. N 皇后 1- 思路 使用回溯的方式实现,回溯三部曲 数据结构:定义三维数组,收集结果1- 回溯终止条件:如果遍历到 row n-1 此时就是结果收集的时刻2- 执行 for 循环遍历,执行递归和回溯 2- 实现…

【Linux】系列入门摘抄笔记-3-系统管理、显示相关命令

系统管理、显示相关命令 shutdown/关机和重启 sync 数据同步:把内存中的数据强制向硬盘中保存。不放心的话,应该在关机或重启之前手工执行几次,避免数据丢失。 shutdown [选项] 时间 [警告信息] shutdown -h now shutdown -h 05:30 shutdown -h 5 (5分钟后关机)reb…

计算机毕业设计选题推荐-视频点播系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

ubuntu安装微信

ubuntu安装微信 微信特性 可以截图无聊天乱码 安装指南 输入下面命令 wget -c -O atzlinux-v12-archive-keyring_lastest_all.deb https://www.atzlinux.com/atzlinux/pool/main/a/atzlinux-archive-keyring/atzlinux-v12-archive-keyring_lastest_all.debsudo apt -y insta…

全国不动产登记技能竞赛有哪些奖项

(一)个人综合奖 个人综合奖在参加代表展示的选手中产生。 1.对获得全国决赛第1名的选手,符合条件的,按程序向中华全国总工会推荐申报“全国五一劳动奖章”。 2.对获得全国决赛前15名的选手,由竞…

【Vue】vue3中通过自定义指令实现数字的动态增加动画

在Vue 3中通过自定义指令实现数字的动态增加动画,可以利用Vue的自定义指令功能,这允许你扩展Vue的内置指令,使得DOM操作更加灵活和强大。以下是如何创建一个自定义指令来实现数字动态增加动画的步骤: 效果演示 代码实现 1、定义指…

四种推荐算法——Embedding+MLP、WideDeep、DeepFM、NeuralCF

一、EmbeddingMLP模型 EmbeddingMLP 主要是由 Embedding 部分和 MLP 部分这两部分组成,使用 Embedding 层是为了将类别型特征转换成 Embedding 向量,MLP 部分是通过多层神经网络拟合优化目标。——用于广告推荐。 Feature层即输入特征层,是模…

【C++】string类——模拟实现

🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、string类主要函数接口💥2、string类的模拟实现💥2.1 构造和析构…