高密做网站哪家强代理,上海app开发和制作公司,山东丽天建设集团网站,企业建设网站的意义#x1f48c; 所属专栏#xff1a;【鸿蒙系统】 #x1f600; 作 者#xff1a;我是夜阑的狗#x1f436; #x1f680; 个人简介#xff1a;一个正在努力学技术的CV工程师#xff0c;专注基础和实战分享 #xff0c;欢迎咨询#xff01; #x1f496; 欢… 所属专栏【鸿蒙系统】 作 者我是夜阑的狗 个人简介一个正在努力学技术的CV工程师专注基础和实战分享 欢迎咨询 欢迎大家这里是CSDN我总结知识的地方喜欢的话请三连有问题请私信 文章目录 前言一、编译“狂飙” 1.添加 –ccache 参数: 2.添加 –fast-rebuild 参数 3.添加 enable_notice_collectionfalse 参数 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_NOHASHDIRtrue export CCACHE_SLOPPINESSinclude_file_ctime2.添加 –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-rebuild3.添加 enable_notice_collectionfalse 参数
原理notice file的搜集用于产品化的LICENSE生成取消收集开源notice的过程在非产品化场景开发态可关闭提升编译速度节省编译~7%时间。OpenHarmony开源软件 Notice收集策略说明。使用执行./build.sh –product-name 产品名 –gn-args –enable_notice_collectionfalse –ccache命令。
./build.sh --product-name rk3568 --gn-args enable_notice_collectionfalse4.添加 –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 {产品名} --jobsN 命令。
./build.sh --product-name {产品名} --jobsN N为工作线程数ninja 默认的N是cpu核数2根据系统的内核数设置工作线程的默认数。在构建大型项目时速度可能会受到主线程分派工作和连接依赖关系图的速度的限制。如果有太多的工作线程主线程就会被耗尽并且它的整体运行速度会变慢。 总结 感谢观看如果有帮助到你请给文章点个赞和收藏让更多的人看到。 也欢迎你关注我。 原创不易还希望各位大佬支持一下你们的点赞、收藏和留言对我真的很重要 最后本文仍有许多不足之处欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正 更多专栏订阅: 【LeetCode题解持续更新中】 【鸿蒙系统】 【Python脚本笔记】 【Java Web项目构建过程】 【数字图像处理】⚽ 【JavaScript随手笔记】 【大数据学习笔记华为云】 【程序错误解决方法建议收藏】 【软件安装教程】 订阅更多你们将会看到更多的优质内容