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

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀

系統(tǒng) OpenHarmony
鴻蒙的編譯構(gòu)建子系統(tǒng)提供了一個基于Gn和ninja的編譯構(gòu)建框架。根據(jù)產(chǎn)品配置,編譯生成對應的鏡像包。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

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

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

一、Prebuilts Download階段

./build/prebuilts_download.sh該命令主要是在構(gòu)建之前下載一些依賴的工具包或二進制,見源碼同級目錄的文件夾OpenHarmony_2.0_canary_prebuilts。

二、腳本的簡明編譯流程

下圖是除了進入GN構(gòu)建之外的腳本的全局構(gòu)建流程:

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

三、Preloader階段

子系統(tǒng)配置文件包含以下三個文件,定義了子系統(tǒng)的名稱和所在路徑。

  1. 子系統(tǒng)配置文件://build/subsystem_config.json,主要包含子系統(tǒng)名稱與路徑信息。
  2. product配置文件:productdefine/common/products/{產(chǎn)品名稱}.json,該配置文件主要包含產(chǎn)品名稱,產(chǎn)品廠商,產(chǎn)品設(shè)備名,產(chǎn)品類型,產(chǎn)品對應子系統(tǒng)路徑,產(chǎn)品所包含的部件等信息。
  3. device配置文件:productdefine/common/device/{產(chǎn)品設(shè)備名稱}.json,該配置文件主要包含設(shè)備名稱,設(shè)備廠商,設(shè)備的目標os與目標cpu,設(shè)備對應子系統(tǒng)路徑等信息。
    在preloader階段以上三個文件會被加載,并通過提取不同字段的信息,歸類出多個配置文件。

以上工作主要由腳本build/lite/hb_internal/preloader/preloader.py完成,并將配置文件輸出在**out/preloader/{產(chǎn)品名稱}**目錄下,為loader階段掃描相應的子系統(tǒng)配置文件做準備,具體對應關(guān)系如下圖:

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

四、GN/Ninja Build階段

鴻蒙的編譯構(gòu)建子系統(tǒng)提供了一個基于Gn和ninja的編譯構(gòu)建框架。根據(jù)產(chǎn)品配置,編譯生成對應的鏡像包。其中編譯構(gòu)建流程為:

  1. 使用Gn配置構(gòu)建目標。
  2. Gn運行后會生成ninja文件。
  3. 通過運行ninja來執(zhí)行編譯任務(wù)。

1、觸發(fā)GN構(gòu)建

Preloader階段結(jié)束后,//build/lite/hb_internal/build/build_process.py.gn_build開始觸發(fā)構(gòu)建,以產(chǎn)品Hi3516DV300為例,命令和參數(shù)如下:

gn gen --args=ohos_build_compiler_specified="clang" ohos_build_compiler_dir="http://prebuilts/clang/ohos/linux-x86_64/llvm" product_path="/home/osm/Work/openharmony/openharmony_3.1/code/productdefine/common/products" product_name="Hi3516DV300" device_name="hi3516dv300" target_cpu="arm" target_os="ohos" is_standard_system=true device_path="device/board/hisilicon/hispark_taurus/linux" ohos_kernel_type="linux" common_feature_verify=true ohos_build_type="debug" ohos_build_time="1651857930667" ohos_build_datetime="2022-05-06 03:25:30" ohos_build_enable_ccache=true', '/home/osm/Work/openharmony/openharmony_3.1/code/out/hi3516dv300'

2、GN構(gòu)建流程

GN的總?cè)肟冢篵uild/core/gn/BUILD.gn。

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

(1)Loader階段

GN構(gòu)建的第一步就是進入Loader階段,該階段主要是通過Preloader階段整合的配置信息加載build configs到out/{產(chǎn)品名稱}/build_configs目錄,該工作是由腳本//build/loader/load.py完成的:

1、根據(jù)out/preloader/{產(chǎn)品名稱}/subsystem_config.json文件中的子系統(tǒng)名稱和路徑信息掃描該路徑下的子系統(tǒng)配置文件,同時兼容bundle.json和ohos.build。

2、loading platforms config:跟據(jù)out/preloader/{產(chǎn)品名稱}/platforms.build加載平臺配置信息,生成out/{產(chǎn)品名稱}/build_configs/platform_list目錄下的文件。

3、根據(jù)1中獲取的bundle.json/ohos.build,解析出out/{產(chǎn)品名稱}/build_configs/{subsystem}/{part}/BUILD.gn、out/{產(chǎn)品名稱}/build_configs/parts_info/、out/{產(chǎn)品名稱}/build_configs/*.gni以及out/{產(chǎn)品名稱}/build_configs/**.json等,以及將編譯入口的模板build/loader/build_gn.template拷貝到out/{產(chǎn)品名稱}/build_configs/BUILD.gn,從而在out/{產(chǎn)品名稱}/build_configs目錄下構(gòu)建出整個工程gn腳本的完整依賴關(guān)系。

(2)make inner_kits

inner_kits是組件提供其它組件的接口,會被其他組件依賴,因此首先編譯該部分。構(gòu)建的具體targets見out/{產(chǎn)品名稱}/build_configs/inner_kits_list.gni

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

(3)packages階段

該階段主要包括版本打包和處理流程,輸出目錄主要在out/{產(chǎn)品名稱}/packages/phone目錄下,package的流程如下:

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

(4)images階段

images階段主要是根據(jù)packages階段生成的system module配置文件制作系統(tǒng)文件和升級鏡像,輸出目錄主要在out/{產(chǎn)品名稱}/packages/phone/{image_name}和out/{產(chǎn)品名稱}/packages/phone/images目錄下,主要流程如下:

鴻蒙標準系統(tǒng)3.1的編譯構(gòu)建簡單解讀-開源基礎(chǔ)軟件社區(qū)

3、Ninja Build

以上是GN的配置構(gòu)建流程,GN命令只是用來生成ninja中間文件,運行ninja才會開始真正的構(gòu)建任務(wù)。以產(chǎn)品Hi3516DV300為例,命令和參數(shù)如下:

ninja -w dupbuild=warn -C /home/osm/Work/openharmony/openharmony_3.1/code/out/hi3516dv300 images

該命令執(zhí)行過程中或結(jié)束后才會生成上述流程中所輸出的文件或鏡像文件。

五、PostBuild

該階段主要做一些收尾的工作,內(nèi)容如下:

1、stat_ccache()

統(tǒng)計ccache信息,并在根目錄輸出ccache.log文件。

2、generate_ninja_trace()

備份前一次的build.trace.gz并在文件命名上打上時間戳,生成新的build.trace.gz和sorted_action_duration.txt。

3、get_warning_list()

根據(jù)生成的out/{產(chǎn)品名稱}/build.log,提取出所有的warnnings并統(tǒng)計到out/{產(chǎn)品名稱}/packages/warning_list.txt。

4、compute_overlap_rate()

根據(jù)build/subsystem_config.json統(tǒng)計出C的重復率,并打印到終端。

??想了解更多關(guān)于開源的內(nèi)容,請訪問:??

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

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

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2022-04-02 20:45:04

Hi3516開發(fā)板操作系統(tǒng)鴻蒙

2022-09-13 15:54:41

samgr鴻蒙

2022-09-08 15:27:11

OHOSSafwk組件

2021-09-16 15:04:28

鴻蒙HarmonyOS應用

2022-09-27 15:57:20

OHOS代碼倉庫

2023-02-01 16:28:30

Linux內(nèi)核鴻蒙

2022-10-12 15:14:08

開機動畫鴻蒙

2021-07-19 15:34:05

鴻蒙HarmonyOS應用

2021-10-09 10:12:39

鴻蒙HarmonyOS應用

2022-09-15 14:56:12

GDB調(diào)試鴻蒙

2021-11-08 07:19:45

鴻蒙HarmonyOS應用

2023-12-29 08:45:40

Python3.8鴻蒙解釋器

2021-08-06 15:09:22

鴻蒙HarmonyOS應用

2021-05-19 08:41:11

鴻蒙HarmonyOS應用

2022-09-13 16:10:15

鴻蒙操作系統(tǒng)

2022-09-07 15:08:58

操作系統(tǒng)鴻蒙

2022-09-06 15:46:52

speexdsp鴻蒙

2022-09-16 15:01:37

操作系統(tǒng)技術(shù)鴻蒙

2023-06-27 15:12:46

C++三方庫移植

2022-09-14 15:28:19

操作系統(tǒng)鴻蒙
點贊
收藏

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