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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 作者:OST開源開發(fā)者 ? 2023-02-14 09:31 ? 次閱讀

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

因?yàn)楣P者只用 build.sh 腳本編譯,沒用過 hb 工具,好像下面的選項(xiàng)也可以用于 hb 工具。

在 OpenHarmony 源碼中執(zhí)行 ./build.sh --h,會(huì)打印出 ./build.sh 中可以添加的所有選項(xiàng)。

$./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 編譯速度的選項(xiàng)

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

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

①添加 --disable-post-build 參數(shù)

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

提供支持 disable post build 參數(shù)是怎么做的:

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

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

②添加 --disable-package-image 參數(shù)

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

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

③添加 --ccache 參數(shù)

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

執(zhí)行 sudo apt-get install ccache 命令安裝 ccache。

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

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

④添加 --fast-rebuild 參數(shù)

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

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

⑤添加 --gn-args enable_notice_collection=false 參數(shù)

notice file 的搜集用于產(chǎn)品化的 LICENSE 生成,取消收集開源 notice 的過程,在非產(chǎn)品化場(chǎng)景開發(fā)態(tài)可關(guān)閉,提升編譯速度,節(jié)省編譯~7% 時(shí)間。

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 參數(shù)

重新執(zhí)行 Preloader、loader、gn,不進(jìn)行最后的編譯動(dòng)作。

編譯流程主要分為:preloader->loader->gn->ninja 這四個(gè)過程,標(biāo)準(zhǔn)系統(tǒng)的編譯構(gòu)建過程請(qǐng)參考:

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

⑦添加 --build-target 參數(shù)

該參數(shù)用于指定編譯模塊。

如何找模塊的名字:

相關(guān)倉(cāng)下 BUILD.gn 中關(guān)注 group、ohos_shared_library、ohos_executable 等關(guān)鍵字。

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

⑧添加 --gn-args enable_lto_O0=true 參數(shù)

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

⑨添加 --gn-args archive_ndk=false 參數(shù)

編譯 sdk 的時(shí)候不執(zhí)行輸出壓縮包的動(dòng)作。

⑩添加 export NO_DEVTOOL=1 參數(shù)

取消 webpack 打包過程中生成 sourcemap 的動(dòng)作。

?添加 --gn-args skip_generate_module_list_file=true 參數(shù)

跳過為 test 生成記錄文件的過程,節(jié)省 gn 解析的過程,只要不跑 tdd 測(cè)試用例,這個(gè)參數(shù)都可以加上,編譯 tdd 用例也沒關(guān)系。

?添加 -T packages --gn-args skip_gen_module_info=true 參數(shù)

在不編譯 image 的時(shí)候:

-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 參數(shù)

在不編譯 test 用例的時(shí)候加上 --gn-args load_test_config=false,來去掉 gn 階段 test 相關(guān)編譯目標(biāo)的解析。

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

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

添加 --fast-rebuild 參數(shù),方式等效于執(zhí)行 ninja -C

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

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

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

將 gn 和 ninja 可執(zhí)行文件添加到 PATH 環(huán)境變量的方法

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

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

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

相關(guān) PR:

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

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

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2716

    瀏覽量

    47526
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1838

    瀏覽量

    32261
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    659

    瀏覽量

    32890
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    390

    瀏覽量

    14880
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3725

    瀏覽量

    16369

原文標(biāo)題:如何讓OpenHarmony編譯速度“狂飆”

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OpenHarmony【輕量系統(tǒng) 編譯】 (基于Hi3861開發(fā)板)

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

    鴻蒙OpenHarmony【小型系統(tǒng) 編譯】(基于Hi3516開發(fā)板)

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

    OpenHarmony 2.0 Canary 編譯的坑

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

    OpenHarmony開發(fā)——系統(tǒng)源碼編譯

    背景隨著OpenHarmony-v3.1的發(fā)布,越來越多的開發(fā)者將目光聚焦到OpenHarmony系統(tǒng)開發(fā)上。對(duì)于首次接觸OpenHarmony的開發(fā)者來說,如何進(jìn)行源碼編譯是一個(gè)大難
    發(fā)表于 08-30 10:08

    如何OpenHarmony編譯速度狂飆

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

    Windows搭建OpenHarmony編譯環(huán)境

    由于OpenHarmony編譯工具鏈主要是建立在Linux操作系統(tǒng)下,如需要編譯OpenHarony內(nèi)核則需要搭建虛擬機(jī)等工序,相對(duì)比較繁瑣。那么,是否可以在Windows操作系統(tǒng)上實(shí)現(xiàn)
    發(fā)表于 08-16 16:07

    編譯openharmony環(huán)境

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

    華為開發(fā)者大會(huì)openharmony3.0特性ARK3.0編譯及運(yùn)行

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

    openharmony3.0重點(diǎn)特性簡(jiǎn)介ARK3.0編譯及運(yùn)行

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

    詳解OpenHarmony編譯和燒錄

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

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

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

    OpenHarmony應(yīng)用的編譯構(gòu)建過程

    2022 年 3 月 31 日發(fā)布了最新的 IDE 工具 DevEco Studio 3.0 Beta3,仔細(xì)閱讀文檔后發(fā)現(xiàn)最新 OpenHarmony 應(yīng)用的編譯構(gòu)建過程已經(jīng)公開。
    的頭像 發(fā)表于 04-21 08:13 ?3937次閱讀

    Windows搭建OpenHarmony編譯環(huán)境

    由于OpenHarmony編譯工具鏈主要是建立在Linux操作系統(tǒng)下,如需要編譯OpenHarony內(nèi)核則需要搭建虛擬機(jī)等工序,相對(duì)比較繁瑣。那么,是否可以在Windows操作系統(tǒng)上實(shí)現(xiàn)
    的頭像 發(fā)表于 08-09 08:26 ?1624次閱讀
    Windows搭建<b class='flag-5'>OpenHarmony</b><b class='flag-5'>編譯</b>環(huán)境

    鴻蒙OpenHarmony【標(biāo)準(zhǔn)系統(tǒng) 編譯】(基于RK3568開發(fā)板)

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

    鴻蒙OpenHarmony開發(fā):【編譯構(gòu)建指導(dǎo)】

    OpenHarmony編譯子系統(tǒng)是以GN和Ninja構(gòu)建為基座,對(duì)構(gòu)建和配置粒度進(jìn)行部件化抽象、對(duì)內(nèi)建模塊進(jìn)行功能增強(qiáng)、對(duì)業(yè)務(wù)模塊進(jìn)行功能擴(kuò)展的系統(tǒng),該系統(tǒng)提供以下基本功能
    的頭像 發(fā)表于 05-13 09:31 ?1836次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>開發(fā):【<b class='flag-5'>編譯</b>構(gòu)建指導(dǎo)】
    主站蜘蛛池模板: 精品国产高清自在线看| 综合色一色综合久久网vr| 久久一本岛在免费线观看2020| 国产黄a三级三级三级| mdapptv麻豆下载| 91系列在线观看免费| 最近更新2019中文字幕国语| 一一本之道高清手机在线观看 | 亚洲精品嫩草研究院久久| 我的好妈妈BD免费观看| 天堂so导航| 无套内射纹身女视频| 天美传媒色情原创精品| 善良的小峓子2在钱中文版女主角 善良的小峓子2在钱免费中文字 | 国产一及毛片| 国产亚洲精品久久久999蜜臀| 国产视频精品免费| 果冻传媒在线观看视频| 激情办公室| 久久毛片免费看一区二区三区| 久久在精品线影院精品国产| 久久综合视频网站| 男女无遮挡吃奶gift动态图 | 天天槽任我槽免费| 无限资源日本2019版| 亚洲AV无码偷拍在线观看| 亚洲免费国产| 曰本熟妇乱妇色A片在线| 20岁αsrian男同志免费| 99在线精品国自产拍| 大屁股妇女流出白浆| 国产露脸150部国语对白| 寂寞骚妇女被后入式抽插| 久久亚洲精选| 暖暖 日本 视频 在线观看免费| 女教师の诱惑| 神马电影dy888午夜我不卡| 午夜一级免费视频| 亚洲一区二区女搞男| 51国产午夜精品免费视频| 成人公开免费视频|