日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Make的編譯說明

本文介紹Make系統的詳細描述,以及講解如何對SDK進行裁剪。

Make命令

命令

解釋

make distclean

清除一切構建過程產生的中間文件,使當前目錄如Clone一樣。

make

使用默認的或已選中的平臺配置文件開始編譯。

make env

顯示當前編譯配置,例如可顯示交叉編譯鏈,編譯CFLAGS等。

make reconfig

彈出多平臺選擇菜單,用戶可按數字鍵選擇,然后根據相應的硬件平臺配置開始編譯。

make config

顯示當前被選擇的平臺配置文件。

make menuconfig

以圖形化的方式編輯和生成功能配置文件make.settings

make help

打印幫助文本。

SDK裁剪

說明

對于V3.0.1以上版本,可以用make menuconfig命令或者config.bat腳本,分別在Linux或Windows主機上圖形化的配置SDK。

運行圖形化配置工具圖示

  • 在圖示界面中按下空格鍵,可以選中或者失效某個功能,使用鍵盤的上下鍵可以選擇不同功能。

  • 使用方向鍵將高亮光條移到選項上,再按鍵盤上的H鍵,將出現幫助文本,對該選項會進行詳細說明。

    不建議手動編輯make.settings文件改動配置,所有配置都需通過上面的圖形界面進行。

配置選項說明如下表格所示。

配置項

說明

FEATURE_MQTT_COMM_ENABLED

MQTT上云功能開關,MQTT上云是指搭載了C Link SDK的嵌入式設備和阿里云服務器之間使用MQTT協議進行連接和交互。使能之后,SDK將提供MQTT相關的API。

FEATURE_COAP_COMM_ENABLED

CoAP上云功能開關,CoAP上云是指搭載了C Link SDK的嵌入式設備和阿里云服務器之間使用CoAP協議進行連接和交互。

FEATURE_HTTP_COMM_ENABLED

HTTP或HTTPS上云功能開關,HTTP或HTTPS上云是指搭載了C Link SDK的嵌入式設備和阿里云服務器之間使用HTTP協議或HTTPS 協議進行連接和交互。

FEATURE_DYNAMIC_REGISTER

一型一密或動態注冊功能開關,動態注冊是指不需要為同個品類下的不同設備燒錄不同的設備證書(ProductKey、DeviceName、DeviceSecret),只需燒錄相同的productSecret,每個設備在網絡通信中動態注冊自己。

FEATURE_DEPRECATED_LINKKIT

高級版接口風格開關,配置進行高級版物模型相關的編程時,C Link SDK不僅提供linkkit_xxx_yyy()風格的舊版接口,還提供 IOT_Linkkit_XXX()風格的新版接口。

FEATURE_DEV_BIND_ENABLED

V2.3.0之后的版本新增綁定功能開關,只有用C Link SDK連接飛燕平臺的用戶需要關注并打開它,用于使能設備被飛燕的公版App控制,可綁定設備和用戶賬號。

FEATURE_DEVICE_MODEL_GATEWAY

在V2.3.0以前的版本中,該開關的曾用名是FEATURE_ENHANCED_GATEWAY

高級版網關能力的開關,配置進行高級版物模型相關的編程時,C Link SDK不僅提供linkkit_xxx_yyy()風格的單品接口,還提供 linkkit_gateway_xxx_yyy()風格的網關接口。

FEATURE_HTTP2_COMM_ENABLED

HTTP2上云功能開關,HTTP2上云是指搭載了C Link SDK的嵌入式設備和阿里云服務器之間使用HTTP2協議進行連接和交互。

FEATURE_MQTT_DIRECT

MQTT直連功能開關,MQTT直連是指設備和阿里云服務器之間使用MQTT協議進行連接,而不會前置基于HTTP協議認證的交互過程。

FEATURE_OTA_ENABLED

固件升級功能開關,固件升級是指設備從阿里云服務器上下載用戶在IoT控制臺中上傳的固件文件功能。

FEATURE_DEVICE_MODEL_ENABLED

在V2.3.0以前的版本中,該開關的曾用名是FEATURE_SDK_ENHANCE

高級版物模型能力的功能開關,高級版物模型能力是指設備可使用基于服務、屬性、事件、的Alink協議和服務端通信。

FEATURE_SUPPORT_TLS

在TLS層是否使用TLS的功能開關,關閉則代表用不帶TLS加密的TCP連接連云。

FEATURE_WIFI_PROVISION_ENABLED

在V2.3.0以前的版本中,該開關的曾用名是FEATURE_WIFI_AWSS_ENABLED

WiFi配網的功能開關,WiFi配網是阿里云自研的一種從手機App發送WiFi網絡的SSID和密碼給設備端的通信協議。

FEATURE_ALCS_ENABLED

本地控制使能開關,僅當設備接入阿里云生活物聯網平臺時使用,并且要求設備通過WiFi或者以太網連接網絡。該開關打開之后,手機App可以通過局域網對設備進行控制。

FEATURE_DEVICE_MODEL_SHADOW

物模型影子開關,使能之后當設備離線時云端可以對設備的屬性進行設置,等設備上線之后設備獲取云端保存的數值并進行執行。

FEATURE_SUB_PERSISTENCE_ENABLED

訂閱Topic保存開關,當設備再次上線時若設備發現該Topic已訂閱,則不再發送訂閱消息給物聯網平臺,節約設備與平臺之間的交互消息。

輸出說明

使用Make進行成功編譯,會打印類似如下的表格,給出每個模塊的ROM占用,以及靜態RAM占用的統計。

| RATE  | MODULE NAME          | ROM     | RAM     | BSS    | DATA   |
|-------|----------------------|---------|---------|--------|--------|
| 45.3% | src/dev_model        | 28563   | 216     | 188    | 28     |
| 28.1% | src/mqtt             | 17737   | 28      | 28     | 0      |
| 25.7% | src/infra            | 16195   | 544     | 60     | 484    |
| 1.65% | src/dev_sign         | 1045    | 48      | 0      | 48     |
|-------|----------------------|---------|---------|--------|--------|
|  100% | - IN TOTAL -         | 63540   | 836     | 276    | 560    |
            

您需要關注的輸出產物都在output/release目錄下。

output/release/lib

產物文件名

說明

libiot_hal.a

HAL接口層的參考實現,提供了HAL_XXX()接口。

libiot_sdk.a

SDK的主庫,提供了IOT_XXX接口和linkkit_xxx()接口。

libiot_tls.a

裁剪過的mbedtls,提供了mbedtls_xxx()接口,支撐libiot_hal.a

output/release/include

產物文件名

說明

mqtt_api.h

當用戶在配置環節選中MQTT上云時出現,列出MQTT上云功能點提供的用戶API。

dev_model_api.h

當用戶在配置環節選中物模型管理時出現,列出物模型管理功能點提供的用戶API。

說明

選中功能的API以<功能名字>_api.h的形式出現,依次類推。

output/release/bin

如果是在主機環境下不做交叉編譯(Ubuntu或Windows),可以產生主機版本直接運行的Demo程序。

產物文件名

說明

linkkit-example-solo

物模型管理功能的例程,可演示linkkit_xxx()接口的使用。

mqtt-example

MQTT上云功能的例程,可演示IOT_XXX()接口的使用。

配置系統組成部分

用戶輸入

設備端C Link SDK的構建配置系統,有以下輸入文件可接受用戶的配置,您可以通過編輯文件,將配置輸入到構建系統中。

  • 功能配置文件:即頂層目錄的make.settings文本文件。

  • 平臺配置文件:即目錄tools/board下的config.xxx.yyy系列文件,也稱config文件。

構建系統最終是依據config.xxx.yyy文件進行編譯,由于功能配置或裁剪更為常用,將該文件抽取到make.settings中。

說明

config.xxx.yyy主要關注目標嵌入式硬件平臺的工具鏈程序和編譯或鏈接選項的指定,用于跨平臺移植。config.xxx.yyy不僅以CONFIG_ENV_CFLAGS += ... 的語法新增自定義CFLAGSCONFIG_ENV_LDFLAGS += ... 也可以指定鏈接選項。make.settings則是在已被確定的目標硬件平臺上,專注于C Link SDK的功能模塊裁剪或者配置,用于裁剪功能模塊。

構建單元

從工程頂層目錄以下,每一個含有iot.mk的子目錄,都被構建系統認為是一個構建單元。

每一個構建單元,若相對頂層makefile的路徑是barfoo/bar1,則可以用make barmake foo/bar1命令單獨編譯。

tools/board/config.xxx.yyy

文件名形式為config.<VENDOR>.<MODEL>的文本文件,會被構建系統認為是硬件平臺配置文件,每個文件對應一個嵌入式軟硬件平臺。

  • 其中<VENDOR>,一般是指明嵌入式平臺的軟件OS提供方,如mxchipubuntuwin7等。會導致構建系統到$(IMPORT_DIR)/<VENDOR>目錄下尋找預編譯庫的二進制庫文件和頭文件。

  • 其中<MODEL>,一般是標明嵌入式平臺的具體硬件型號,如mtk7687qcom4004等,也可以寫其它信息,因為構建系統不會去理解它,比如mingw32x86-64等。

調試方式

  • make ...命令行中,設置TOP_Q變量為空,可打印工程頂層的執行邏輯,例如硬件平臺的選擇,SDK主庫的生成等。

    make .... TOP_Q=                  
  • make ...命令行中,設置Q變量為空,可打印模塊內部的構建過程,例如目標文件的生成,頭文件搜尋路徑的組成等。

    make .... Q=            
  • 可以用make foo/bar單獨對foo/bar進行構建,需要先執行make reconfig

  • 可以進入.O/foo/bar路徑,查看完整的編譯臨時目錄,makefile和全部源碼,在這里執行makemake foo/bar效果等同。

交叉編譯相關

以下是在tools/board/config.xxx.yyy平臺配置文件中使用的變量。

變量

說明

CONFIG_ENV_CFLAGS

指定全局的CFLAGS編譯選項,傳給compiler

例如CONFIG_ENV_CFLAGS += -DDEBUG

CONFIG_ENV_LDFLAGS

指定全局的LDFLAGS鏈接選項,傳給linker

例如CONFIG_ENV_LDFLAGS += -lcrypto

CROSS_PREFIX

指定交叉編譯工具鏈共有的前綴。

例如CROSS_PREFIX := arm-none-eabi-,會導致構建系統使用arm-none-eabi-gccarm-none-eabi-ar,以及arm-none-eabi-strip等。

OVERRIDE_CC

當交叉工具鏈沒有共有的前綴或者前綴不符合prefix+gcc/ar/strip類型時。

例如armcc,可用OVERRIDE_CC = armcc單獨指定C編譯器。

OVERRIDE_AR

當交叉工具鏈沒有共有的前綴或者前綴不符合prefix+gcc/ar/strip類型時。

例如armar,可用OVERRIDE_AR = armar單獨指定庫壓縮器。

OVERRIDE_STRIP

當交叉工具鏈沒有共有的前綴或者前綴不符合prefix+gcc/ar/strip類型時。

例如armcc沒有對應的strip程序,可用OVERRIDE_STRIP = true單獨指定strip程序不執行。

CONFIG_LIB_EXPORT

指定SDK產生的二進制庫的形式。

例如CONFIG_LIB_EXPORT := dynamic可以指定產生Linux上的libiot_sdk.so動態庫文件,默認為產生跨平臺的libiot_sdk.a靜態庫。

目錄文件相關

變量

說明

CONFIG_mmm/nnn

指定mmm/nnn目錄是否需要編譯的開關,例如CONFIG_mmm/nnn :=的寫法會導致該目錄被跳過編譯。