自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

系統(tǒng) OpenHarmony
OpenHarmony有兩種編譯方式,一種是通過(guò)hb工具編譯,一種是通過(guò)build.sh腳本編譯。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

OpenHarmony有兩種編譯方式,一種是通過(guò)hb工具編譯,一種是通過(guò)build.sh腳本編譯。本文筆者將提升build.sh方式編譯速度的方法整理如下:

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

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

$ ./build.sh -h
++++++++++++++++++++++++++++++++++++++++
The system shell is bash 4.4.20(1)-release
++++++++++++++++++++++++++++++++++++++++
2023-02-07 12:58:04
-h
Usage: entry.py [options]
Options:
-h, --help show this help message and exit
--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
-T BUILD_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
=====build successful=====

提升OpenHarmony編譯速度的選項(xiàng)

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

./build.sh --product-name rk3568 --ccache

通過(guò)在該命令后添加如下選項(xiàng)提升編譯速度。

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

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

提供支持disable post build參數(shù)是怎么做的 https://gitee.com/openharmony/build/issues/I5MT9X。

./build.sh --product-name rk3568 --disable-post-build

如何讓OpenHarmony編譯速度“狂飆”-開(kāi)源基礎(chǔ)軟件社區(qū)

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

取消最后所有的image鏡像文件壓縮成tar包的動(dòng)作

tar包位置 out\rk3568\images.tar.gz

./build.sh --product-name rk3568 --disable-package-image

添加 --ccache 參數(shù)

ccache會(huì)緩存c/c++編譯的編譯輸出,下一次在編譯輸入不變的情況下,直接復(fù)用緩存的產(chǎn)物。用來(lái)緩存編譯過(guò)的.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-name rk3568 --ccache export CCACHE_NOHASHDIR="true" 
export CCACHE_SLOPPINESS="include_file_ctime"

如何讓OpenHarmony編譯速度“狂飆”-開(kāi)源基礎(chǔ)軟件社區(qū)

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

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

./build.sh --product-name rk3568 --fast-rebuild

如何讓OpenHarmony編譯速度“狂飆”-開(kāi)源基礎(chǔ)軟件社區(qū)

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

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

OpenHarmony開(kāi)源軟件Notice收集策略說(shuō)明 https://gitee.com/openharmony/build/blob/master/docs/開(kāi)源軟件Notice收集策。

./build.sh --product-name rk3568 --gn-args enable_notice_collection=false

添加 --build-only-gn 參數(shù)

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

編譯流程主要分為:preloader->loader->gn->ninja這四個(gè)過(guò)程,標(biāo)準(zhǔn)系統(tǒng)的編譯構(gòu)建過(guò)程請(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打包過(guò)程中生成sourcemap的動(dòng)作

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

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

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

在不編譯image的時(shí)候:-T packages --gn-args skip_gen_module_info=true,去掉gn階段module info的生成

./build.sh --product-name rk3568 --build-target 模塊名 -T packages --gn-args 
skip_gen_module_info=true

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

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

以上參數(shù)可疊加使用

例如全量編譯,筆者使用下面這條命令編譯速度提升了120%:

./build.sh --product-name rk3568 --disable-post-build --disable-package-image 
--gn-args enable_notice_collection=false --gn-args load_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)前的終端窗口中有效)
export
PATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin
# 然后在源碼目錄下執(zhí)行如下語(yǔ)句
ninja -C out/rk3568 wukong

如何讓OpenHarmony編譯速度“狂飆”-開(kāi)源基礎(chǔ)軟件社區(qū)

# 例如編譯ace_napi部件的動(dòng)態(tài)庫(kù)libace_napi.z.so
# 將gn和ninja可執(zhí)行文件添加到PATH環(huán)境變量的方法(臨時(shí)改變,只能在當(dāng)前的終端窗口中有效)
export PATH=$PATH:/你自己的源碼路徑/sources/prebuilts/build-tools/linux-x86/bin
# 然后在源碼目錄下執(zhí)行如下語(yǔ)句
ninja -C out/rk3568 ace_napi

如何讓OpenHarmony編譯速度“狂飆”-開(kāi)源基礎(chǔ)軟件社區(qū)

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

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

# 
找到讀者你自己的OpenHarmony源碼目錄下的gn和ninja可執(zhí)行文件絕對(duì)路徑,在源碼下/prebuilts/build-tools/linux-x86/bin
export
PATH=$PATH:/home/xxx/xxx/sources/prebuilts/build-tools/linux-x86/bin

例如筆者的gn和ninja可執(zhí)行文件絕對(duì)路徑。

export 
PATH=$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里通過(guò)–log-level可以指定編譯期間的日志級(jí)別,三個(gè)級(jí)別可選:debug, info和error,默認(rèn)值是info

./build.sh --product-name rk3568 --ccache --log-level=debug

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

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2023-07-27 14:38:33

開(kāi)源鴻蒙

2024-07-26 16:39:33

鴻蒙系統(tǒng)開(kāi)源構(gòu)建系統(tǒng)

2023-08-09 07:04:17

清華微軟LLM

2022-04-27 09:24:22

前端代碼速度

2019-12-23 08:57:50

Python代碼單線程

2025-01-13 12:30:00

C++開(kāi)發(fā)編譯

2023-12-11 17:30:52

預(yù)安裝應(yīng)用鴻蒙Launcher

2023-12-11 17:26:21

Launcher鴻蒙預(yù)安裝應(yīng)用

2022-01-11 15:41:18

鴻蒙HarmonyOS應(yīng)用

2023-08-11 14:06:58

鴻蒙Windows

2023-08-28 08:40:23

Sonic開(kāi)發(fā)JSON

2013-06-13 10:02:36

JavaScriptJavaScript編

2021-12-02 10:05:01

鴻蒙HarmonyOS應(yīng)用

2022-05-07 16:13:59

DevEcoTool鴻蒙

2022-05-27 15:04:53

鴻蒙操作系統(tǒng)

2016-03-02 17:55:03

app用戶加載

2021-02-25 21:37:48

iOS應(yīng)用系統(tǒng)

2023-03-13 16:00:05

訓(xùn)練模型

2023-02-01 16:28:30

Linux內(nèi)核鴻蒙

2022-05-11 15:08:52

驅(qū)動(dòng)開(kāi)發(fā)系統(tǒng)移植
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)