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

Linux開發環境集成SDK

在實際開發項目過程中,如果已有自己的開發工程,可以將Link SDK添加到現有開發工程中進行編譯。本文通過示例為您講解如何將Link SDK添加到一個已有工程中并進行編譯。

示例說明

本示例包含一個打印Hello World!的測試程序hello.c,并有一個編譯該測試程序的makefile。具體代碼內容如下(附hello代碼片段):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
        printf("Hello World!\n\r");
        return(0);
}

makefile的編碼內容如下:

PROG_FILE := hello.c mqtt_basic_demo.c
PROG_OBJS := $(patsubst %.c,%.o,$(PROG_FILE))
PROG = hello

SDK_ROOT = $(shell pwd)/LinkSDK
SDK_INC = -I$(SDK_ROOT)/output/include/
SDK_LIB = $(SDK_ROOT)/output/lib/libaiot.a -lpthread

all:prepare $(PROG_OBJS)
	$(CC) $(CFLAGS) -o $(PROG) $(PROG_OBJS) $(SDK_INC) $(SDK_LIB)

prepare:
	make -C $(SDK_ROOT)

./%.o: %.c
	$(CC) -o $@ -c $< $(CFLAGS) $(SDK_INC) 

clean:
	make -C LinkSDK clean
	rm -f *.o $(PROG) $(SDK_OBJS)

SDK移植步驟

  1. 獲取SDK。

    參照SDK獲取中提供的路徑獲取SDK,具體配置如下:

    • 設備OS選擇Linux

    • 連接物聯網平臺協議選擇MQTT

    • 數據加密選擇TLS-CA

    • 設備認證方案選擇設備密鑰

    不選擇任何高級能力,單擊按鈕開始生成下載SDK。

  2. SDK移植步驟。

    SDK下載之后,將壓縮文件解壓,并將Link SDK目錄復制到hello.c所在目錄,如下內容所示:

    $ ls -l
    
    -rwxrwxrwx 1 root root   183  5月 11 19:45 hello.c
    drwxrwxrwx 1 root root  4096  5月 11 17:28 LinkSDK
    -rwxrwxrwx 1 root root   672  5月 11 19:49 makefile
                            
  3. 復制MQTT示例并進行修改。

    LinkSDK/demos/mqtt_basic_demo.c復制到hello.c所在目錄,并將mqtt_basic_demo.c文件中的main函數修改為sdk_test,修改后的代碼如內容所示:

    /* TODO: 替換為自己設備的設備證書*/
    char *product_key       = "${YourProductKey}";
    char *device_name       = "${YourDeviceName}";
    char *device_secret     = "${YourDeviceSecret}";
    
    /*
        TODO: 替換為自己實例的接入點
    */
    char  *mqtt_host = "${YourInstanceId}.mqtt.iothub.aliyuncs.com";
    
    
    int sdk_test(int argc, char *argv[])
    {
        int32_t     res = STATE_SUCCESS;
        void       *mqtt_handle = NULL;
        char       *url = "iot-as-mqtt.cn-shanghai.aliyuncs.com"; /* 阿里云平臺華東2(上海)的域名后綴 */
    
    ...
    }             
  4. 修改makefile包含SDK。

    修改makefile去編譯SDK的源代碼,以及復制出來的文件mqtt_basic_demo.c(附sdk_test代碼片段):

    PROG_FILE := hello.c mqtt_basic_demo.c
    PROG_OBJS := $(patsubst %.c,%.o,$(PROG_FILE))
    PROG = hello
    
    SDK_ROOT = $(shell pwd)/LinkSDK
    SDK_DIR = $(SDK_ROOT)/core $(SDK_ROOT)/core/sysdep $(SDK_ROOT)/core/utils  $(SDK_ROOT)/portfiles/aiot_port $(SDK_ROOT)/external  $(SDK_ROOT)/external/mbedtls/library
    SDK_INC = -I$(SDK_ROOT)/external/mbedtls/include  $(foreach dir, $(SDK_DIR), -I$(dir) )
    SDK_FILES = $(foreach dir, $(SDK_DIR), $(wildcard $(dir)/*.c))
    SDK_OBJS = $(patsubst %.c,%.o,$(SDK_FILES))
    SDK_LIBS = -lpthread
    
    CFLAGS += $(SDK_INC)
    
    main:$(PROG_OBJS) $(SDK_OBJS)
        $(CC) $(CFLAGS) -o $(PROG) $(PROG_OBJS) $(SDK_OBJS) $(SDK_LIBS)
    
    clean:
        rm -f *.o $(PROG) $(SDK_OBJS)

    上面的改動中需要注意的是:

    • SDK_DIR需要包含SDK中設備用到的功能目錄,如果您選擇了高級功能,那么在LinkSDK/components目錄下將會出現相應的目錄,那么需要將相關目錄也加入到SDK_DIR中。

    • 因為本例中選擇使用TLS對數據進行加密,所以編譯的時候也編譯了SDK中附帶的mbedtls,并在SDK_INC中指定了對external/mbedtls/include目錄的包含。

    • 因為編譯后的程序在Linux平臺上運行,會使用到線程相關的庫,所以在SDK_LIBS里面指定了對pthread庫的鏈接。

  5. 修改hello.c調用SDK。

    修改hello.c調用文件mqtt_basic_demo.c中的函數sdk_test,初始化SDK并連接阿里云物聯網平臺:

    #include <stdio.h>
    #include <stdlib.h>
    
    /*聲明sdk_test函數*/
    extern int sdk_test(int argc, char *argv[]);
    
    int main(int argc, char **argv)
    {
            printf("Hello World!\n\r");
            /*調用SDK Demo中的sdk_test函數,去初始化SDK并連接阿里云物聯網平臺*/
            sdk_test(0,NULL);
            return(0);
    }
                            
  6. 編譯:make。運行:./hello

    在hello.c所在目錄運行make命令進行編譯,然后運行生成的hello程序,如果一切順利將輸出類似如下內容:

    Hello World!
    [1687781092.755][LK-0313] MQTT user calls aiot_mqtt_connect api, connect
    [1687781092.755][LK-032A] mqtt host: iot-****.mqtt.iothub.aliyuncs.com
    [1687781092.755][LK-0317] user name: demo******
    establish tcp connection with server(host='iot-******.mqtt.iothub.aliyuncs.com', port=[443])
    success to establish tcp, fd=3
    local port: 52008
    [1687781092.811][LK-1000] establish mbedtls connection with server(host='iot-****.mqtt.iothub.aliyuncs.com', port=[443])
    [1687781092.844][LK-1000] success to establish mbedtls connection, (cost 45338 bytes in total, max used 48306 bytes)
    [1687781092.899][LK-0313] MQTT connect success in 137 ms
    AIOT_MQTTEVT_CONNECT
    heartbeat response