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

鴻蒙標準系統3.1的編譯構建簡單解讀

系統 OpenHarmony
鴻蒙的編譯構建子系統提供了一個基于Gn和ninja的編譯構建框架。根據產品配置,編譯生成對應的鏡像包。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

一、Prebuilts Download階段

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

二、腳本的簡明編譯流程

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

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

三、Preloader階段

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

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

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

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

四、GN/Ninja Build階段

鴻蒙的編譯構建子系統提供了一個基于Gn和ninja的編譯構建框架。根據產品配置,編譯生成對應的鏡像包。其中編譯構建流程為:

  1. 使用Gn配置構建目標。
  2. Gn運行后會生成ninja文件。
  3. 通過運行ninja來執行編譯任務。

1、觸發GN構建

Preloader階段結束后,//build/lite/hb_internal/build/build_process.py.gn_build開始觸發構建,以產品Hi3516DV300為例,命令和參數如下:

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構建流程

GN的總入口:build/core/gn/BUILD.gn。

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

(1)Loader階段

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

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

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

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

(2)make inner_kits

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

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

(3)packages階段

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

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

(4)images階段

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

鴻蒙標準系統3.1的編譯構建簡單解讀-開源基礎軟件社區

3、Ninja Build

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

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

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

五、PostBuild

該階段主要做一些收尾的工作,內容如下:

1、stat_ccache()

統計ccache信息,并在根目錄輸出ccache.log文件。

2、generate_ninja_trace()

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

3、get_warning_list()

根據生成的out/{產品名稱}/build.log,提取出所有的warnnings并統計到out/{產品名稱}/packages/warning_list.txt。

4、compute_overlap_rate()

根據build/subsystem_config.json統計出C的重復率,并打印到終端。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-04-02 20:45:04

Hi3516開發板操作系統鴻蒙

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內核鴻蒙

2022-10-12 15:14:08

開機動畫鴻蒙

2022-09-15 14:56:12

GDB調試鴻蒙

2021-07-19 15:34:05

鴻蒙HarmonyOS應用

2021-10-09 10:12:39

鴻蒙HarmonyOS應用

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-16 15:01:37

操作系統技術鴻蒙

2022-09-07 15:08:58

操作系統鴻蒙

2022-09-06 15:46:52

speexdsp鴻蒙

2022-09-13 16:10:15

鴻蒙操作系統

2023-03-24 14:47:24

NAPI框架HDF框架

2023-06-27 15:12:46

C++三方庫移植
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 情侣酒店偷拍一区二区在线播放 | av毛片| 成人三级影院 | 国产精品午夜电影 | 欧美精品片 | 中文字幕在线电影观看 | 成人精品国产免费网站 | 亚洲成人一区二区 | 国色天香综合网 | 亚洲一区二区电影网 | 午夜三区| 超碰97人人人人人蜜桃 | 欧美精品在线视频 | 日韩在线免费 | 奇米影视首页 | 亚洲午夜精品 | 国产精品中文字幕在线 | 国产精品久久影院 | 亚洲一区二区三区在线播放 | 狠狠干天天干 | 欧美精品在线播放 | 一区中文字幕 | av在线一区二区三区 | 久久影音先锋 | 国产精品视频二区三区 | 亚洲精品电影在线观看 | 久久久久久久一区二区三区 | 岛国在线免费观看 | 成人在线免费 | 欧美炮房 | 久久一二 | 一级毛片在线播放 | 美女久久久久久久 | 欧美一区二区三区久久精品 | 一级片在线播放 | 日日干夜夜干 | 国产午夜精品视频 | 久久视频免费观看 | 日韩视频精品 | 成人a网 | 久草青青草 |