【鸿蒙系统】 ---OpenHarmony加快本地编译(二)

news2024/11/25 16:22:59

请添加图片描述

  • 💌 所属专栏:【鸿蒙系统】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、编译“狂飙”
      •  1.添加 –ccache 参数:
      •  2.添加 –fast-rebuild 参数
      •  3.添加 enable_notice_collection=false 参数
      •  4.添加 –build-target 参数
      •  5.添加 --build-only-gn 参数
      •  6.添加 --jobs 参数
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【鸿蒙系统】专栏的第2篇文章;
  今天也要开始学习鸿蒙系统了💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。在学习鸿蒙系统过程中,让我最头疼的就是编译速度好慢,从 git 上拉下来的源码编译过程都是全量编译,这让我倍感焦灼,于是就带着问题深入了解一下鸿蒙系统编译过程,学习一下加快 harmony 本地编译的参数;

请添加图片描述

  专栏地址:【鸿蒙系统】 , 此专栏是我是夜阑的狗对鸿蒙系统编译过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、编译“狂飙”

  OpenHarmony有两种编译方式,一种是通过hb工具编译,一种是通过build.sh脚本编译。编译时,适当选择添加以下的编译参数可以加快编译的过程。本文将提升build.sh方式编译速度的方法整理如下:

 1.添加 –ccache 参数:

  • 原理:ccache会缓存c/c++编译的编译输出,下一次在编译输入不变的情况下,直接复用缓存的产物。

  • 安装:

  在线安装:执行 sudo apt-get install ccache 命令。

sudo apt-get install ccache

  离线安卓:官网下载,下载二进制文件,把ccache所在路径配置到环境变量。

  • 使用:执行./build.sh –product-name 产品名 –ccache 命令。再在 --ccache 后添加export CCACHE_NOHASHDIR=“true” 和 export CCACHE_SLOPPINESS=“include_file_ctime” (设置ccache在做hash的时候不hash路径、不检查文件的change time)
./build.sh --product-name rk3568 --ccache export CCACHE_NOHASHDIR="true" export CCACHE_SLOPPINESS="include_file_ctime"

 2.添加 –fast-rebuild 参数

  • 原理:编译流程主要分为:preloader->loader->gn->ninja 这四个过程,在本地没有修改gn和产品配置相关文件的前提下,添加 –fast-rebuild 会让你直接从 ninja 编译开始。ninja 直接执行编译链接步骤,跳过前面的产品配置解析和 gn 解析,在 gn 相关脚本没有发生改变的前提下使用。
  • 使用:执行./build.sh –product-name 产品名 –fast-rebuild 命令。
./build.sh --product-name rk3568 --fast-rebuild

 3.添加 enable_notice_collection=false 参数

  • 原理:notice file的搜集用于产品化的LICENSE生成,取消收集开源notice的过程,在非产品化场景开发态可关闭,提升编译速度,节省编译~7%时间。
  • OpenHarmony开源软件 Notice收集策略说明。
  • 使用:执行./build.sh –product-name 产品名 –gn-args –enable_notice_collection=false –ccache命令。
./build.sh --product-name rk3568 --gn-args enable_notice_collection=false

 4.添加 –build-target 参数

  • 原理:通过编译指定的模块从而加快编译速度。
  • 该参数用于指定编译模块,如何找模块的名字:
    • 相关仓下BUILD.gn中关注group、ohos_shared_library、ohos_executable等关键字。
    • ./build.sh –product-name 产品名 –build-target 模块名 –build-only-gn生成build.ninja,然后去该文件中查找相关模块名。
  • 使用:执行./build.sh –product-name 产品名 –build-target ark_js_host_linux_tools_packages命令。

 5.添加 --build-only-gn 参数

  • 原理:编译流程主要分为:preloader->loader->gn->ninja 这四个过程,添加 --build-only-gn 参数只会重新执行Preloader、loader、gn,不进行最后的编译动作。

 6.添加 --jobs 参数

  • 原理:为编译添加多线程并发执行。

  • 使用:执行 ./build.sh --product-name {产品名} --jobs=N 命令。

./build.sh --product-name {产品名} --jobs=N 

  N为工作线程数(ninja 默认的N是cpu核数+2),根据系统的内核数设置工作线程的默认数。在构建大型项目时,速度可能会受到主线程分派工作和连接依赖关系图的速度的限制。如果有太多的工作线程,主线程就会被耗尽,并且它的整体运行速度会变慢。


总结

  感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🌼 【鸿蒙系统】
  • 👑 【Python脚本笔记】
  • 🚝 【Java Web项目构建过程】
  • 💛 【数字图像处理】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

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

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

相关文章

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图,我下载的贴图地址为(牙膏盒贴图链接) 2. 打开3DsMax,创建一个长方体,设置长宽高分别为180、45、40毫米 打开材质编辑器,点击漫反射后的按钮 双击“位图” 将材质赋予长…

C++初阶 | [九] list 及 其模拟实现

摘要:介绍 list 容器,list 模拟实现,list与vector的对比 list(带头双向循环列表) 导入:list 的成员函数基本上与 vector 类似,具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…

JavaScript中new操作符具体干了什么

文章目录 一、是什么二、流程三、手写new操作符 一、是什么 在JavaScript中,new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) …

【堆、位运算、数学】算法例题

目录 十九、堆 121. 数组中的第K个最大元素 ② 122. IPO ③ 123. 查找和最小的K对数字 ② 124. 数据流的中位数 ③ 二十、位运算 125. 二进制求和 ① 126. 颠倒二进制位 ① 127. 位1的个数 ① 128. 只出现一次的数字 ① 129. 只出现一次的数字 II ② 130. 数字范围…

Java项目:66 ssm实验室耗材管理系统设计与实现+jsp

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员管理实验材料,审核教师与学生对实验材料的申请信息,统计每学年实验材料的使用总数信息。 教师申请使用实验材料…

未来有无限可能,加油年轻人!

在浩渺的宇宙中,我们如同微尘般渺小,然而,正是这些微小的存在,构成了世界的五彩斑斓。而对于年轻人来说,他们就是这个世界的未来,是希望的象征,是无限可能的源泉。他们拥有青春的热情&#xff0…

什么是智能体(agent)

智能体(Agent)是人工智能领域中的一个核心概念。在最基本的层面上,智能体可以被定义为一个实体,它能够在其所处的环境中自主地感知信息,并根据这些信息做出决策,以实现特定的目标或任务。智能体的关键特性包…

idea将Java代码打成jar包

1.进入idea的项目管理界面编写好代码 2.点击Artifacts的“”号下的jar->“From modules with dependencies” 3.在Main Class选择主函数 4.点击OK后,选择菜单栏的“Build” -> “Build Artifacts” -> “Build” 之后我们就可以看到在左侧生成了一个out文件…

生成单一c段或者连续c段范围内的所有ip地址+生成范围内C段脚本

1. 背景 马上有电子政务外网攻防演练要处理ip 2. 脚本1 生成c段和连续c段所有ip地址.py 用处:生成单一c段或者连续c段范围内的所有ip地址。 用法:ipc.txt 放入 ip段或者两个ip段范围:如: 192.168.3.0/24 172.16.1.0/24-1…

罐头鱼AI视频混剪矩阵获客系统|批量剪辑定时发送

罐头鱼AI视频混剪矩阵获客系统 随着数字化时代的来临,视频内容已经成为各行业吸引用户关注和提升品牌形象的重要方式之一。为了帮助用户更便捷、高效地进行视频制作和推广,罐头鱼AI推出了全新的视频混剪矩阵获客系统,为您的视频营销增添智能利…

使用Python读取一个文本文件并计算其中每个单词出现的次数

import re import matplotlib.pyplot as plt from collections import Counter word_counts {} with open(E:\自然语言处理\Hamlet(2).txt) as f:for line in f:words line.strip().lower().split()for word in words:word re.sub(r[^a-zA-Z],,word)if word in word_counts:…

【链表】Leetcode 2. 两数相加【中等】

两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的, 并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不…

网速监控,实时网络速度监控

带宽与网速 现在,对高带宽的需求空前高涨,而且网络(包括标准的内部部署)以及公共、私有和混合环境都变得更加复杂。 虽然带宽和网速经常互换使用,但它们并不总是相同的。网速更多的是与延迟有关,而不是与…

文件上传基础篇

文件上传基础篇 文件上传漏洞原理 ​ 目标网站存在文件上传接口,但是对用户上传的文件没有做仔细甄别,导致黑客可以根据此功能点直接上传木马到网站服务器,造成危害 文件上传存在点 ​ 通常有头像上传,pdf上传 文件上传防护 …

Vue 计算属性和监视属性

Vue 计算属性和监视属性 computed computed 计算属性 规则: 用已有的属性计算不存在的属性默认调用一次get()只有值不发生改变的时候才可以使用简写(函数);值发生改变 使用对象式写法,才可以配置set()方法底层原理使…

har的编译及引用

1.创建HAR 选择文件->新建->模块,然后再下一个页面选择static library,之后在接下来的页面设置模块名字,然后下一步直到完成。 2.创建成功后在新建的模块下编写自己的代码内容。 3.编译HAR 编译默认是从Index.ets文件下进行导出,如果…

Flink:使用 Faker 和 DataGen 生成测试数据

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

用图解说明mysql 行锁加锁规则

加锁原则 原则 1:加锁的基本单位是 next-key lock。希望你还记得,next-key lock 是前开后闭区间。原则 2:查找过程中访问到的对象才会加锁。优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock …

Linux---基本操作命令之用户管理命令

1.1useradd 添加新用户 root用户:/root 普通用户:/home/ 创建的用户还是david,只是在dave文件夹下 1.2 passwd 设置密码 给用户tony设置密码: 123456 1.3 id 查看用户是否存在 查看有没有这个用户:id 名字 gid:用…

当人工智能无处不在

以下文章来源:新华社 2024年度的“西南偏南”多元创新大会和艺术节8日至16日在得克萨斯州首府奥斯汀举行。在今年的数百场讲座或沙龙讨论中,热度最高、讨论最多的前沿话题不难猜——人工智能(AI)。 焦点高度发散。从太空探索到音乐…