すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:Linux 開発環境への SDK の統合

最終更新日:Jun 16, 2026

既存の開発プロジェクトに 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
PROG_OBJS := $(patsubst %.c,%.o,$(PROG_FILE))
PROG = hello

all: $(PROG_OBJS)
	$(CC) $(CFLAGS) -o $(PROG) $(PROG_OBJS)

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

clean:
	rm -f *.o $(PROG)

SDK の移植

  1. SDK の取得

    SDK を取得する または に記載されているパスから SDK を取得します。SDK を次のように設定します。

    • [デバイス OS][Linux] に設定します。

    • [IoT Platform に接続するためのプロトコル][MQTT] に設定します。

    • [データ暗号化][TLS-CA] に設定します。

    • [デバイス認証方法][デバイスシークレット] に設定します。

    [高度な機能] は選択しないでください。 [Generate] をクリックして SDK をダウンロードします。

  2. SDK 移植手順

    SDK をダウンロードして解凍した後、次のように hello.c が含まれるディレクトリに LinkSDK フォルダをコピーします。

    $ ls -l
    
    -rwxrwxrwx 1 root root   183  May 11 19:45 hello.c
    drwxrwxrwx 1 root root  4096  May 11 17:28 LinkSDK
    -rwxrwxrwx 1 root root   672  May 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"; /* 中国 (上海) リージョンの Alibaba Cloud IoT Platform のドメイン名サフィックス。 */
    
    ...
    }             
  4. SDK を含めるための makefile の変更

    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 には、デバイスが使用する機能のフォルダを含める必要があります。高度な機能を選択した場合、対応するフォルダが LinkSDK/components ディレクトリにあります。これらのフォルダを SDK_DIR に追加する必要があります。

    • この例では、トランスポート層セキュリティ (TLS) を使用してデータを暗号化します。そのため、SDK に含まれる mbedtls ライブラリもコンパイルされます。SDK_INC 変数は、external/mbedtls/include ディレクトリをインクルードするように指定します。

    • コンパイル済みのプログラムは Linux 上で実行され、スレッド関連のライブラリを使用します。そのため、SDK_LIBS 変数は pthread ライブラリへのリンクを指定します。

  5. SDK を呼び出すための hello.c の変更

    hello.c を変更して、mqtt_basic_demo.csdk_test 関数を呼び出します。これにより SDK が初期化され、デバイスが Alibaba Cloud IoT Platform に接続されます。

    #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 デモ内の sdk_test 関数を呼び出して SDK を初期化し、Alibaba Cloud IoT Platform に接続します。 */
            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
    ハートビート応答