

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：使用 Amazon IoT Device SDK for Embedded C
<a name="iot-embedded-c-sdk"></a>

此部分描述如何运行 Amazon IoT Device SDK for Embedded C。

**Topics**
+ [步骤 1：安装 Amazon IoT Device SDK for Embedded C](#install-embedded-c-sdk)
+ [步骤 2：配置示例应用](#iot-c-sdk-app-config)
+ [步骤 3：构建并运行示例应用程序](#iot-c-sdk-app-run)

## 步骤 1：安装 Amazon IoT Device SDK for Embedded C
<a name="install-embedded-c-sdk"></a>

Amazon IoT Device SDK for Embedded C通常面向需要优化的 C 语言运行时的资源受限设备。您可以在任何操作系统上使用此 SDK，并将其托管在任何类型的处理器（例如 MCU 和 MPU）上。如果您有更多的可用内存和处理资源，我们建议您使用更高级的 Amazon IoT设备和移动 SDK 之一（例如，C\+\+、Java、JavaScript 和 Python）。

一般而言，Amazon IoT Device SDK for Embedded C适用于以下系统：这些系统使用 MCU 或运行嵌入式操作系统的低端 MPU。对于本部分中的编程示例，我们假定您的设备使用 Linux。

**Example**  

1. 从 [GitHub](https://github.com/aws/aws-iot-device-sdk-embedded-C) 将 Amazon IoT Device SDK for Embedded C下载到您的设备。

   ```
   git clone https://github.com/aws/aws-iot-device-sdk-embedded-c.git --recurse-submodules
   ```

   这将在当前目录中创建一个名为 `aws-iot-device-sdk-embedded-c`的目录。

1. 前往到该目录并签出最新版本。请参阅 [github.com/aws/aws-iot-device-sdk-embedded-C/tags](https://github.com/aws/aws-iot-device-sdk-embedded-C/tags) 以获取最新版本标签。

   ```
   cd aws-iot-device-sdk-embedded-c
   git checkout {{latest-release-tag}}
   ```

1. 安装 OpenSSL 1.1.0 或更高版本。当通过软件包管理器安装时，OpenSSL 开发库通常被称为“libssl-dev”或“openssl-devel”。

   ```
   sudo apt-get install libssl-dev
   ```

## 步骤 2：配置示例应用
<a name="iot-c-sdk-app-config"></a>

Amazon IoT Device SDK for Embedded C 包含供您试用的示例应用程序。为了简单起见，本教程使用的是 `mqtt_demo_mutual_auth`应用程序，此应用程序演示如何连接到 Amazon IoT Core消息代理并订阅和发布到 MQTT 主题。

1. 将您在 [Amazon IoT Core 教程入门](iot-gs.md)中创建的证书和私有密钥复制到 `build/bin/certificates`目录中。
**注意**  
设备和根 CA 证书可能会过期或被吊销。如果您的证书过期或被吊销，则您必须将新的 CA 证书或私有密钥和设备证书复制到您的设备上。

1. 您必须使用个人 Amazon IoT Core终端节点、私有密钥、证书和根 CA 证书配置示例。导航到 `aws-iot-device-sdk-embedded-c/demos/mqtt/mqtt_demo_mutual_auth`目录。

   如果您已安装 Amazon CLI，则可使用此命令查找您的账户端点 URL。

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   如果您尚未安装 Amazon CLI，请打开 [Amazon IoT控制台](https://console.amazonaws.cn/iot/home)。在导航窗格中，依次选择 **Manage (管理)** 和 **Things (事物)**。为您的设备选择 IoT 事物，然后选择 **Interact**（交互）。您的终端节点显示在事物详细信息页面的 **HTTPS** 部分中。

1. 打开 `demo_config.h`文件并更新以下各项的值：  
AWS\_IOT\_ENDPOINT  
您的私有终端节点。  
CLIENT\_CERT\_PATH  
您的证书文件路径，例如 `certificates/device.pem.crt"`。  
CLIENT\_PRIVATE\_KEY\_PATH  
您的私有密钥文件名，例如 `certificates/private.pem.key`。

   例如：

   ```
   // Get from demo_config.h
   // =================================================
   #define AWS_IOT_ENDPOINT               "{{my-endpoint}}-ats.iot.us-east-1.amazonaws.com"
   #define AWS_MQTT_PORT                  8883
   #define CLIENT_IDENTIFIER              "testclient"
   #define ROOT_CA_CERT_PATH              "certificates/AmazonRootCA1.crt"
   #define CLIENT_CERT_PATH               "certificates/{{my-device-cert}}.pem.crt"
   #define CLIENT_PRIVATE_KEY_PATH        "certificates/{{my-device-private-key}}.pem.key"
   // =================================================
   ```

1. 使用此命令检查您的设备上是否安装了 CMake。

   ```
   cmake --version
   ```

   如果您看到编译器的版本信息，则可以继续下一部分。

   如果出现错误或看不到任何信息，则需要使用此命令安装 cmake 软件包。

   ```
   sudo apt-get install cmake
   ```

   再次运行 **cmake --version**命令，确认 CMake 已安装并且您已准备好继续操作。

1. 使用此命令检查您的设备上是否安装了开发工具。

   ```
   gcc --version
   ```

   如果您看到编译器的版本信息，则可以继续下一部分。

   如果出现错误或看不到任何编译器信息，则需要使用此命令安装 `build-essential`软件包。

   ```
   sudo apt-get install build-essential
   ```

   再次运行 **gcc --version**命令，确认构建工具已安装并且您已准备好继续操作。

## 步骤 3：构建并运行示例应用程序
<a name="iot-c-sdk-app-run"></a>

此步骤介绍如何在您的设备上生成 `mqtt_demo_mutual_auth` 应用程序并使用 Amazon IoT Device SDK for Embedded C 将其连接到 [Amazon IoT 控制台](https://console.amazonaws.cn/iot/home)。

**运行 Amazon IoT Device SDK for Embedded C示例应用程序**

1. 导航到 `aws-iot-device-sdk-embedded-c`并创建目录。

   ```
   mkdir build && cd build
   ```

1. 输入以下 CMake 命令以生成 Makefiles 构建所需的文件。

   ```
   cmake ..  
   ```

1. 输入以下命令以构建可执行应用程序文件。

   ```
   make
   ```

1. 使用此命令运行 `mqtt_demo_mutual_auth`应用程序。

   ```
   cd bin
   ./mqtt_demo_mutual_auth
   ```

   您应该可以看到类似于如下所示的输出内容：  
![运行 Amazon IoT Device SDK for Embedded C 示例应用程序的命令行输出。](http://docs.amazonaws.cn/iot/latest/developerguide/images/successful-run2.png)

设备现已使用 Amazon IoT Device SDK for Embedded C连接到 Amazon IoT。

您还可以使用 Amazon IoT控制台查看示例应用程序正在发布的 MQTT 消息。有关如何在 [Amazon IoT控制台](https://console.amazonaws.cn/iot/home)中使用 MQTT 客户端的信息，请参阅[使用 MQTT 客户端查看 Amazon IoT MQTT 消息](view-mqtt-messages.md)。