色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何讓OpenHarmony編譯速度“狂飆”

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 作者:OST開源開發者 ? 2023-02-14 09:31 ? 次閱讀

OpenHarmony 有兩種編譯方式,一種是通過 hb 工具編譯,一種是通過 build.sh 腳本編譯。本文筆者將提升 build.sh 方式編譯速度的方法整理分享給大家。

因為筆者只用 build.sh 腳本編譯,沒用過 hb 工具,好像下面的選項也可以用于 hb 工具。

在 OpenHarmony 源碼中執行 ./build.sh --h,會打印出 ./build.sh 中可以添加的所有選項。

$./build.sh-h
++++++++++++++++++++++++++++++++++++++++
Thesystemshellisbash4.4.20(1)-release
++++++++++++++++++++++++++++++++++++++++
2023-02-0712:58:04
-h
Usage:entry.py[options]

Options:
-h,--helpshowthishelpmessageandexit
--source-root-dir=SOURCE_ROOT_DIR
--product-name=PRODUCT_NAME
--device-name=DEVICE_NAME
--target-cpu=TARGET_CPU
--target-os=TARGET_OS
--compile-config=COMPILE_CONFIG
-TBUILD_TARGET,--build-target=BUILD_TARGET
--gn-args=GN_ARGS
--ninja-args=NINJA_ARGS
-v,--verbose
--keep-ninja-going
--sparse-image
--jobs=JOBS
--export-para=EXPORT_PARA
--build-only-gn
--ccache
--fast-rebuild
--disable-package-image
--disable-post-build
--disable-part-of-post-build=DISABLE_PART_OF_POST_BUILD
--log-level=LOG_LEVEL
--device-type=DEVICE_TYPE
--build-variant=BUILD_VARIANT
--share-ccache=SHARE_CCACHE
=====buildsuccessful=====

提升OpenHarmony 編譯速度的選項

build.sh 腳本編譯 rk3568 方式命令如下:

./build.sh--product-namerk3568--ccache
通過在該命令后添加如下選項提升編譯速度。

①添加 --disable-post-build 參數

取消 Postbuild 過程,最后的 ninja trace 解析、每個子系統(不包括源碼中的 third_party 部分)的 rom size 統計等動作會沒有(每個子系統部件描述文件名稱為 bundle.json,里面定義了子系統的名稱。)

提供支持 disable post build 參數是怎么做的:

https://gitee.com/openharmony/build/issues/I5MT9X
./build.sh--product-namerk3568--disable-post-build

e6831752-ab9b-11ed-bfe3-dac502259ad0.png

②添加 --disable-package-image 參數

取消最后所有的 image 鏡像文件壓縮成 tar 包的動作,tar 包位置 out k3568images.tar.gz。

./build.sh--product-namerk3568--disable-package-image

③添加 --ccache 參數

ccache 會緩存 c/c++ 編譯的編譯輸出,下一次在編譯輸入不變的情況下,直接復用緩存的產物。用來緩存編譯過的 .o 文件等。

執行 sudo apt-get install ccache 命令安裝 ccache。

再在 --ccache 后添加 export CCACHE_NOHASHDIR=“true” 和 export CCACHE_SLOPPINESS=“include_file_ctime”(設置 ccache 在做 hash 的時候不 hash 路徑、不檢查文件的 change time)

./build.sh--product-namerk3568--ccacheexportCCACHE_NOHASHDIR="true"exportCCACHE_SLOPPINESS="include_file_ctime"
e6af5128-ab9b-11ed-bfe3-dac502259ad0.png

④添加 --fast-rebuild 參數

編譯流程主要分為:preloader->loader->gn->ninja 這四個過程,添加后直接基于已有 out/rk3568/build.ninja 直接執行編譯鏈接步驟,跳過前面的產品配置解析和 gn 解析,在 gn 相關腳本沒有發生改變的前提下使用。

./build.sh--product-namerk3568--fast-rebuild
e6c9b388-ab9b-11ed-bfe3-dac502259ad0.jpg

⑤添加 --gn-args enable_notice_collection=false 參數

notice file 的搜集用于產品化的 LICENSE 生成,取消收集開源 notice 的過程,在非產品化場景開發態可關閉,提升編譯速度,節省編譯~7% 時間。

OpenHarmony 開源軟件 Notice 收集策略說明:

https://gitee.com/openharmony/build/blob/master/docs/%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6Notice%E6%94%B6%E9%9B%86%E7%AD%96%E7%95%A5%E8%AF%B4%E6%98%8E.md
./build.sh--product-namerk3568--gn-argsenable_notice_collection=false

⑥添加 --build-only-gn 參數

重新執行 Preloader、loader、gn,不進行最后的編譯動作。

編譯流程主要分為:preloader->loader->gn->ninja 這四個過程,標準系統的編譯構建過程請參考:

https://ost.51cto.com/posts/13594

⑦添加 --build-target 參數

該參數用于指定編譯模塊。

如何找模塊的名字:

相關倉下 BUILD.gn 中關注 group、ohos_shared_library、ohos_executable 等關鍵字。

./build.sh --product-name 產品名 --build-target 模塊名 --build-only-gn 生成 build.ninja,然后去該文件中查找相關模塊名。

⑧添加 --gn-args enable_lto_O0=true 參數

在鏈接的時候會減弱優化的等級,建議在只考慮編譯是否成功的時候使用(會影響最后的 so 的性能和 rom 大小)

⑨添加 --gn-args archive_ndk=false 參數

編譯 sdk 的時候不執行輸出壓縮包的動作。

⑩添加 export NO_DEVTOOL=1 參數

取消 webpack 打包過程中生成 sourcemap 的動作。

?添加 --gn-args skip_generate_module_list_file=true 參數

跳過為 test 生成記錄文件的過程,節省 gn 解析的過程,只要不跑 tdd 測試用例,這個參數都可以加上,編譯 tdd 用例也沒關系。

?添加 -T packages --gn-args skip_gen_module_info=true 參數

在不編譯 image 的時候:

-Tpackages--gn-argsskip_gen_module_info=true
去掉 gn階段 module info 的生成。
./build.sh--product-namerk3568--build-target模塊名-Tpackages--gn-argsskip_gen_module_info=true

?添加 --gn-args load_test_config=false 參數

在不編譯 test 用例的時候加上 --gn-args load_test_config=false,來去掉 gn 階段 test 相關編譯目標的解析。

以上參數可疊加使用,例如全量編譯,筆者使用下面這條命令編譯速度提升了 120%:

./build.sh--product-namerk3568--disable-post-build--disable-package-image--gn-argsenable_notice_collection=false--gn-argsload_test_config=false

添加 --fast-rebuild 參數,方式等效于執行 ninja -C

首先用 ./build.sh 全量編譯,然后在源碼下執行 ninja -C out/rk3568 moduleb_lib(編譯對象模塊)

#例如編譯wukong部件的二進制可執行文件wukong
#將gn和ninja可執行文件添加到PATH環境變量的方法(臨時改變,只能在當前的終端窗口中有效)
exportPATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin
#然后在源碼目錄下執行如下語句
ninja-Cout/rk3568wukong
e6ff5470-ab9b-11ed-bfe3-dac502259ad0.png
#例如編譯ace_napi部件的動態庫libace_napi.z.so
#將gn和ninja可執行文件添加到PATH環境變量的方法(臨時改變,只能在當前的終端窗口中有效)
exportPATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin
#然后在源碼目錄下執行如下語句
ninja-Cout/rk3568ace_napi

e71cb2fe-ab9b-11ed-bfe3-dac502259ad0.png

將 gn 和 ninja 可執行文件添加到 PATH 環境變量的方法

將 gn 和 ninja 可執行文件添加到 PATH 環境變量的方法(臨時改變,只能在當前的終端窗口中有效)

exportPATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin

notice file 是否收集的編譯選項–gn-args enable_notice_collection=false 是如何支持的。

相關 PR:

https://gitee.com/openharmony/build/pulls/772/files
指定編譯期間的日志級別

在 OpenHarmony 的 build.sh 里通過 –log-level 可以指定編譯期間的日志級別,三個級別可選:debug,info 和 error,默認值是 info。
./build.sh--product-namerk3568--ccache--log-level=debug

本地打開 ninja trace:解壓 out/rk3568/build.trace.gz,將 build.trace 拖到 chrome 的 trace 鏈接 chrome://tracing/ 打開即可。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2771

    瀏覽量

    49057
  • 參數
    +關注

    關注

    11

    文章

    1865

    瀏覽量

    32771
  • 編譯
    +關注

    關注

    0

    文章

    674

    瀏覽量

    33604
  • 腳本
    +關注

    關注

    1

    文章

    395

    瀏覽量

    28299
  • OpenHarmony
    +關注

    關注

    26

    文章

    3804

    瀏覽量

    17872

原文標題:如何讓OpenHarmony編譯速度“狂飆”

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    鴻蒙OpenHarmony【輕量系統 編譯】 (基于Hi3861開發板)

    OpenHarmony支持hb和build.sh兩種編譯方式。此處介紹hb方式,build.sh腳本編譯方式請參考[使用build.sh腳本編譯源碼]。
    的頭像 發表于 05-14 17:53 ?1704次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【輕量系統 <b class='flag-5'>編譯</b>】 (基于Hi3861開發板)

    鴻蒙OpenHarmony【小型系統 編譯】(基于Hi3516開發板)

    OpenHarmony支持hb和build.sh兩種編譯方式。此處介紹hb方式,build.sh腳本編譯方式請參考[使用build.sh腳本編譯源碼]。
    的頭像 發表于 05-10 15:59 ?920次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【小型系統 <b class='flag-5'>編譯</b>】(基于Hi3516開發板)

    OpenHarmony 2.0 Canary 編譯的坑

    文章轉載自:liangkz這兩天在嘗鮮OpenHarmony2.0 Canary,根據官方文檔做了相關配置和編譯,確認OK,詳情可見其他人分享的文章,這里我僅對我踩過的幾個坑,做一下簡單的總結。1.
    發表于 04-18 10:06

    如何OpenHarmony編譯速度狂飆

    OpenHarmony有兩種編譯方式,一種是通過hb工具編譯,一種是通過build.sh腳本編譯。本文筆者將提升build.sh方式編譯
    發表于 02-07 13:06

    Windows搭建OpenHarmony編譯環境

    由于OpenHarmony編譯工具鏈主要是建立在Linux操作系統下,如需要編譯OpenHarony內核則需要搭建虛擬機等工序,相對比較繁瑣。那么,是否可以在Windows操作系統上實現
    發表于 08-16 16:07

    編譯openharmony環境

    OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,當前的OpenHarmony源代碼僅支持在Linux環境下編譯。 開源代碼倉庫地址
    的頭像 發表于 06-23 15:29 ?1486次閱讀
    <b class='flag-5'>編譯</b><b class='flag-5'>openharmony</b>環境

    華為開發者大會openharmony3.0特性ARK3.0編譯及運行

    openharmony3.0重點特性簡介ARK3.0編譯及運行 在2021華為開發者大會上,OpenHarmony分論壇介紹了openharmony3.0重點特性簡介ARK3.0
    的頭像 發表于 10-23 13:16 ?1285次閱讀
    華為開發者大會<b class='flag-5'>openharmony</b>3.0特性ARK3.0<b class='flag-5'>編譯</b>及運行

    openharmony3.0重點特性簡介ARK3.0編譯及運行

    openharmony3.0重點特性簡介ARK3.0編譯及運行 今天的2021華為開發者大會上,OpenHarmony分論壇上展示了openharmony3.0重點特性簡介ARK3.0
    的頭像 發表于 10-23 13:53 ?1617次閱讀
    <b class='flag-5'>openharmony</b>3.0重點特性簡介ARK3.0<b class='flag-5'>編譯</b>及運行

    詳解OpenHarmony編譯和燒錄

    在上一篇【博流 BL-HWC-G1 開發板試用】開箱及編譯燒錄官方程序(BL602 IoT SDK)中,我們講了這塊開發板使用官方SDK進行編譯燒錄,這一篇,我們來講OpenHarmony
    的頭像 發表于 11-08 09:58 ?5926次閱讀
    詳解<b class='flag-5'>OpenHarmony</b>的<b class='flag-5'>編譯</b>和燒錄

    大咖教你如何編譯OpenHarmony并燒錄到開發板

    在上一篇【博流 BL-HWC-G1 開發板試用】開箱及編譯燒錄官方程序(BL602 IoT SDK)中,我們講了這塊開發板使用官方SDK進行編譯燒錄,這一篇,我們來講OpenHarmony
    的頭像 發表于 12-01 16:56 ?4157次閱讀
    大咖教你如何<b class='flag-5'>編譯</b><b class='flag-5'>OpenHarmony</b>并燒錄到開發板

    OpenHarmony應用的編譯構建過程

    2022 年 3 月 31 日發布了最新的 IDE 工具 DevEco Studio 3.0 Beta3,仔細閱讀文檔后發現最新 OpenHarmony 應用的編譯構建過程已經公開。
    的頭像 發表于 04-21 08:13 ?4152次閱讀

    Windows搭建OpenHarmony編譯環境

    由于OpenHarmony編譯工具鏈主要是建立在Linux操作系統下,如需要編譯OpenHarony內核則需要搭建虛擬機等工序,相對比較繁瑣。那么,是否可以在Windows操作系統上實現
    的頭像 發表于 08-09 08:26 ?1944次閱讀
    Windows搭建<b class='flag-5'>OpenHarmony</b><b class='flag-5'>編譯</b>環境

    鴻蒙OpenHarmony【標準系統 編譯】(基于RK3568開發板)

    OpenHarmony支持hb和build.sh兩種編譯方式。此處介紹hb方式,build.sh腳本編譯方式請參考[使用build.sh腳本編譯源碼]。
    的頭像 發表于 05-08 17:37 ?1693次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【標準系統 <b class='flag-5'>編譯</b>】(基于RK3568開發板)

    鴻蒙OpenHarmony開發:【編譯構建指導】

    OpenHarmony編譯子系統是以GN和Ninja構建為基座,對構建和配置粒度進行部件化抽象、對內建模塊進行功能增強、對業務模塊進行功能擴展的系統,該系統提供以下基本功能
    的頭像 發表于 05-13 09:31 ?2309次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>開發:【<b class='flag-5'>編譯</b>構建指導】

    樹莓派 Pico 2040 的“速度狂飆”:時鐘速度幾乎翻倍!

    速度狂飆”的強心針,它的時鐘速度從原來的133MHz直接飛躍到200MHz,幾乎翻了一倍!這意味著你的小樹莓派現在可以跑得更快、干得更多,簡直就像從“小毛驢”升
    的頭像 發表于 03-25 09:25 ?174次閱讀
    樹莓派 Pico 2040 的“<b class='flag-5'>速度</b><b class='flag-5'>狂飆</b>”:時鐘<b class='flag-5'>速度</b>幾乎翻倍!
    主站蜘蛛池模板: 国精产品砖一区二区三区糖心 | 无码AV精品久久一区二区免费 | 午夜婷婷精品午夜无码A片影院 | 国际老妇高清在线观看 | 免费成人高清在线视频 | 精品久久久亚洲精品中文字幕 | 国产女合集第六部 | 纯肉巨黄H爆粗口男男分卷阅读 | 久久vs国产综合色 | 久久99热狠狠色AV蜜臀 | 国产成人综合高清在线观看 | 13一18TV处流血TV | 男女做爽爽爽视频免费软件 | 美女张开腿露出尿口扒开来摸动漫 | 精品人伦一区二区三区潘金莲 | 嗯别插太快好深再深点 | 亚洲嫩草影院久久精品 | 亚洲黄色在线 | 99久久免费国产精品特黄 | 起碰免费公开97在线视频 | 色播播电影 | 娇妻玩4P被三个男人伺候电影 | 伦理电影2499伦理片 | 亚洲国产成人私人影院 | 精品国产免费观看久久久 | 国产免国产免费 | 亚洲国产果果在线播放在线 | yellow高清免费观看日本 | 免费鲁丝片一级在线观看 | 亚洲免费大全 | 亚洲欧美中文日韩视频 | 浪荡女天天不停挨CAO日常视 | 久久这里只精品热在线99 | 久久精品一卡二卡三卡四卡视频版 | 琪琪色原网站ying | 袖珍人与大黑人性视频 | 特级毛片内射WWW无码 | 且试天下芒果免费观看 | 亚洲国产成人久久精品影视 | 国产91综合 | 日本午夜精品久久久无码 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品