

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

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

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

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

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

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

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

**Example**  

1. 从 [GitHub](https://github.com/aws/aws-iot-device-sdk-embedded-C) 将 AWS 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>

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

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

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

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

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

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

1. 打开 `demo_config.h`文件并更新以下各项的值：  
AWS\$1IOT\$1ENDPOINT  
您的私有终端节点。  
CLIENT\$1CERT\$1PATH  
您的证书文件路径，例如 `certificates/device.pem.crt"`。  
CLIENT\$1PRIVATE\$1KEY\$1PATH  
您的私有密钥文件名，例如 `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` 应用程序并使用 AWS IoT Device SDK for Embedded C 将其连接到 [AWS IoT 控制台](https://console.aws.amazon.com/iot/home)。

**运行 AWS 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
   ```

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

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

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