成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙標(biāo)準(zhǔn)系統(tǒng)3.1的編譯構(gòu)建簡(jiǎn)單解讀

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

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

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

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

一、Prebuilts Download階段

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

二、腳本的簡(jiǎn)明編譯流程

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

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

三、Preloader階段

子系統(tǒng)配置文件包含以下三個(gè)文件,定義了子系統(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)品對(duì)應(yīng)子系統(tǒng)路徑,產(chǎn)品所包含的部件等信息。
  3. device配置文件:productdefine/common/device/{產(chǎn)品設(shè)備名稱}.json,該配置文件主要包含設(shè)備名稱,設(shè)備廠商,設(shè)備的目標(biāo)os與目標(biāo)cpu,設(shè)備對(duì)應(yīng)子系統(tǒng)路徑等信息。
    在preloader階段以上三個(gè)文件會(huì)被加載,并通過提取不同字段的信息,歸類出多個(gè)配置文件。

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

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

四、GN/Ninja Build階段

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

  1. 使用Gn配置構(gòu)建目標(biāo)。
  2. Gn運(yùn)行后會(huì)生成ninja文件。
  3. 通過運(yùn)行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。

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

(1)Loader階段

GN構(gòu)建的第一步就是進(jìn)入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)配置文件,同時(shí)兼容bundle.json和ohos.build。

2、loading platforms config:跟據(jù)out/preloader/{產(chǎn)品名稱}/platforms.build加載平臺(tái)配置信息,生成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)建出整個(gè)工程gn腳本的完整依賴關(guān)系。

(2)make inner_kits

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

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

(3)packages階段

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

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

(4)images階段

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

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

3、Ninja Build

以上是GN的配置構(gòu)建流程,GN命令只是用來生成ninja中間文件,運(yùn)行ninja才會(huì)開始真正的構(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é)束后才會(huì)生成上述流程中所輸出的文件或鏡像文件。

五、PostBuild

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

1、stat_ccache()

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

2、generate_ninja_trace()

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

3、get_warning_list()

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

4、compute_overlap_rate()

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

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

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

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

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

2022-04-02 20:45:04

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

2022-09-08 15:27:11

OHOSSafwk組件

2022-09-13 15:54:41

samgr鴻蒙

2021-09-16 15:04:28

鴻蒙HarmonyOS應(yīng)用

2022-09-27 15:57:20

OHOS代碼倉庫

2023-02-01 16:28:30

Linux內(nèi)核鴻蒙

2022-10-12 15:14:08

開機(jī)動(dòng)畫鴻蒙

2022-09-15 14:56:12

GDB調(diào)試鴻蒙

2021-07-19 15:34:05

鴻蒙HarmonyOS應(yīng)用

2021-10-09 10:12:39

鴻蒙HarmonyOS應(yīng)用

2021-11-08 07:19:45

鴻蒙HarmonyOS應(yīng)用

2023-12-29 08:45:40

Python3.8鴻蒙解釋器

2021-08-06 15:09:22

鴻蒙HarmonyOS應(yīng)用

2021-05-19 08:41:11

鴻蒙HarmonyOS應(yīng)用

2022-09-13 16:10:15

鴻蒙操作系統(tǒng)

2022-09-16 15:01:37

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

2022-09-07 15:08:58

操作系統(tǒng)鴻蒙

2022-09-06 15:46:52

speexdsp鴻蒙

2023-03-24 14:47:24

NAPI框架HDF框架

2023-06-27 15:12:46

C++三方庫移植
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 玖玖精品| 久久精品青青大伊人av | 亚洲成人免费av | 一区二区免费在线观看 | 色婷婷精品国产一区二区三区 | 极情综合网 | 国产精品久久久久久久久久妇女 | 国产成人在线一区二区 | 免费看黄视频网站 | 久久久久精 | 国产毛片久久久 | 亚洲综合热 | 天天爽夜夜爽精品视频婷婷 | 可以免费观看的av | 欧美三区在线观看 | 久久av一区二区三区 | 日本涩涩网 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕一区二区三区四区五区 | 国产精品一区二区欧美黑人喷潮水 | 91视视频在线观看入口直接观看 | 黄色一级大片在线免费看产 | 91精品国产一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 免费a级毛片在线播放 | 日韩1区2区 | www成人免费视频 | 欧美日韩在线综合 | 精品美女久久久久久免费 | www国产亚洲精品 | 精品亚洲一区二区三区四区五区高 | 麻豆国产一区二区三区四区 | 久久国产视频一区 | 国产人久久人人人人爽 | 久久综合激情 | 盗摄精品av一区二区三区 | 久久不卡| 精品国产乱码一区二区三 | 不卡欧美 | 日本精品视频一区二区三区四区 | 国产一区二区三区久久久久久久久 |