{"id":20064900,"url":"https://github.com/baidu/iot-sdk-c","last_synced_at":"2025-06-20T13:36:13.313Z","repository":{"id":25938287,"uuid":"104198166","full_name":"baidu/iot-sdk-c","owner":"baidu","description":"device sdk for baidu IoT Core service, in c. Including MQTT client","archived":false,"fork":false,"pushed_at":"2022-04-14T08:29:51.000Z","size":3172,"stargazers_count":118,"open_issues_count":0,"forks_count":72,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-05-05T18:37:11.163Z","etag":null,"topics":["device-management","edge-sdk","mqtt","sdk"],"latest_commit_sha":null,"homepage":"https://iot.baidu.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baidu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-20T10:00:11.000Z","updated_at":"2025-03-17T04:00:56.000Z","dependencies_parsed_at":"2022-07-27T05:46:19.816Z","dependency_job_id":null,"html_url":"https://github.com/baidu/iot-sdk-c","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/baidu/iot-sdk-c","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2Fiot-sdk-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2Fiot-sdk-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2Fiot-sdk-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2Fiot-sdk-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baidu","download_url":"https://codeload.github.com/baidu/iot-sdk-c/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baidu%2Fiot-sdk-c/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260953865,"owners_count":23088118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["device-management","edge-sdk","mqtt","sdk"],"created_at":"2024-11-13T13:48:09.481Z","updated_at":"2025-06-20T13:36:08.296Z","avatar_url":"https://github.com/baidu.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 百度云天工物联网平台 IoTCore SDK for C ##\n\n此代码库包含以下组件：\n\n- iotcore_client(IoTCore SDK for C) 帮助设备快速接入百度云天工IoTCore服务\n- Serializer函数库帮助进行序列化和反序列化数据，来进行数据在设备上的存储或读取\n\n## IoTCore SDK for C ##\n- 代码使用ANSI C（C99）规范，从而使代码更方便移植到不同的平台中\n- 请避免使用编译器扩展选项，防止在不同平台上编译的不同行为表现\n- 在IoTCore SDK中，使用了一个平台抽象层，以隔离操作系统相关性（线程和互斥机制，通信协议，例如HTTP等）。\n\n\n## 如何克隆资源库 ##\n该代码库使用了一些第三方库作为子模块依赖关系。为了自动克隆这些子模块，您需要使用如下所述的--recursive选项：\n\n    \tgit clone --recursive https://github.com/baidu/iot-sdk-c.git\n\n## OS平台和硬件兼容性 ##\n百度天工IoTCore SDK可用于广泛的操作系统平台和设备。对于设备的最低要求是：\n\n- 能够建立IP连接：只有IP功能的设备可以直接与IoTCore进行通信。\n- 支持TLS（可选）：推荐设备使用TLS来与IoTCore进行安全连接。 但这不是必需的。 IoTCore SDK也支持使用用户名/密码的方式进行非加密通讯\n- 具有实时时钟或实现代码连接到NTP服务器（可选）：如果你使用TLS连接或使用安全令牌以进行身份​​验证，时钟同步是必需的。\n- 具有至少64KB的RAM：SDK的具体内存占用取决于所使用的SDK文件、协议以及目标平台。我们尽可能将占用减到最低。\n\n## SDK目录结构 ##\n\n\n- /c-utility\n\n\t引用的git子模块，使用的第三方工具库。请注意，其中可能包含嵌套子模块。\n\n- /umqtt\n\n\t引用的git子模块，使用的第三方MQTT客户端。请注意，其中可能包含嵌套子模块。\n\n- /parson\n\n\t引用的git子模块，使用的第三方的JSON库。请注意，其中可能包含嵌套子模块\n\n- /certs\n\n\t包含与 IoT Core 进行通信所需的证书。\n\n- /build_all\n\n\t包含客户端库和相关组件的针对指定平台的编译脚本。\n\n- /iotcore_client\n\n\t包含IoTCore客户端组件，连接IoTCore服务，并发送和接受消息。有关如何使用它的信息，请参阅[https://cloud.baidu.com/doc/IoTCore/index.html](https://cloud.baidu.com/doc/IoTCore/index.html \"物联网核心套件 IoTCore\")\n\n- /serializer\n\n\t包含在原始消息库之上提供存储和JSON序列化功能的库。这些库便于上传结构化数据以及用于 IoT Core 服务的命令和控制。\n\n\n\n## 准备开发环境 ##\n\n这篇文章介绍如何准备开发环境来使用百度云天工的c语言版本的IoTCore SDK。这里主要介绍如何配置windows和Linux下的开发环境。\n\n### 关于openssl ###\n\n目前openssl LTS的版本有两个：`1.0.2x`和`1.1.x` ，两者的区别在于，后者在前者的基础上优化了API接口，一些数据结构已经对开发者透明，也就是说，如果在`1.0.2x`可以编译成功的软件，在`1.1.x`版本的openssl下就无法编译成功了。正是因为这个原因，openssl组织仍需要维护之前老接口的openssl版本（因为大量软件使用的仍旧是老接口），也就是`1.0.2x`，但这两个版本在安全性上是等价的。本sdk使用的是`1.0.2x`版本。如果是用git clone openssl仓库，也务必使用`-b`参数注明版本！\n```\ngit clone https://github.com/openssl/openssl.git -b OpenSSL_1_0_2-stable\n```\n\n### 配置Windows的开发环境 ###\n\n- 安装Visual Studio 2015（或其他版本Visual Studio，针对其他版本VS，需使用相应版本的VS命令替换以下与版本号相关的命令内容），你可以使用Visual Studio Community免费版本通过遵循license许可\n\n- 安装Visual C++ 和 NuGet安装包管理工具\n\n- 安装git\n\n\t确认git是否在你的PATH环境变量目录列表，你可以使用git version来检查git的版本\n\n    \t\tgit version\n\n- 安装CMake\n\n\t确认CMake在你的PATH环境变量目录列表，你可以使用cmake –version来测试安装是否正常并且检测版本。可以使用CMake来创建Visual Studio的项目，还可以编译libraries和样例。\n\n\tCMake官方下载地址：https://cmake.org/download\n\n- 编译C语言SDK\n\n如果你想在本地编译开发和测试SDK的话，可以通过执行下面的步骤来生成项目文件:\n\n- 打开CMD命令行\n\n- 在respository的根目录运行以下命令：\n\n\t\t\tmkdir build\n\t\t\tcd build\n\t\t\tcmake -G \"Visual Studio 14 2015\" .. \n\n\t如果想编译64位程序，修改cmake参数：\n\n\t\t\tcmake .. -G \"Visual Studio 14 2015 Win64\"\n\t\n\t如果\n\n\t如果项目文件成功生成的话，你应该可以看到一个Visual Studio的工程文件.sln在cmakefolder下面，可以通过下面的步骤来编译SDK\n\n- 在visual studio里面打开cmake\\iotcore_c_sdk.sln，或者运行下面的命令来生成项目文件：\n\n\t\tcmake --build . -- /m /p:Configuration=Release \n\n- 你也可以使用MSBuild argument编译用于调试的文件：\n \n\t\tcmake --build . -- /m /p:Configuration=Debug\n\n\n\n### 设置Linux开发环境 ###\n\n这一节会介绍如何设置C SDK在ubuntu下面的开发环境。可以使用CMake来创建makefiles，执行命令make调用gcc来将他们编译成为C语言版本的SDK\n\n- 安装IDE开发工具，你可以下载Clion工具，链接地址：https://www.jetbrains.com/clion/, 可以直接导入现有项目，不要覆盖当前的CMake项目\n\n- 在编译SDK之前确认所有的依赖库都已经安装好，例如ubuntu平台，你可以执行apt-get这个命令区安装对应的安装包\n\n\t\t\tsudo apt-get update sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev \n\n- 验证CMake是不是最低允许的版本2.8.12\n\n\t\t\tcmake --version\n \n\t关于如何在ubuntu 14.04上将Cmake升级到3.x，可以阅读 [How to install CMake 3.2 on Ubuntu 14.04](http://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04 \"How to install CMake 3.2 on Ubuntu 14.04\")\n- 验证gcc是不是最低允许的版本呢4.4.7\n\n\t\t\tgcc  --version\n\n- 关于如何在ubuntu 14.04上将gcc升级的信息可以阅读 [How do I use the latest GCC 4.9 on Ubuntu 14.04](http://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4-9-on-ubuntu-14-04 ).\n\n- 编译C版本的SDK\n\n\t执行下面命令编译SDK：\n\n\t\tmkdir build\n\t\tcd build \n\t\tcmake .. \n\t\tcmake --build .  # append '-- -j \u003cn\u003e' to run \u003cn\u003e jobs in parallel \n\n\t如果要调试可以编译binaries的话，可以通过传递下面的参数个CMake，这样就可以生成可以调试的binaries了\n\n\t\tcmake -DCMAKE_BUILD_TYPE=Debug .. \n\n\n### 设置macOS的开发环境 ###\n\n这一节介绍如何设置C语言SDK在macOS上的开发环境。CMake可以生成makefiles，make使用makefiles可以将他们编译成为c语言SDK利用clang，clang默认会包含在XCode里面，我们已经测试过c语言版本的SDK在Sierra上，对应XCode版本是8.\n- 安装IDE开发工具，你可以下载Clion工具，链接地址：https://www.jetbrains.com/clion/, 可以直接导入现有项目，不要覆盖当前的CMake项目\n\n- 在编译SDK之前，确保所有的dependencies都安装好。对于macOS系统，你可以使用Homebrew来安装正确的packages\n\t\tbrew update brew install git cmake pkgconfig openssl ossp-uuid \n\n- 验证CMake是不是允许最低版本2.8.12\n\n\t\tcmake --version \n\n- 编译C语言SDK\n\n\t\tmkdir build\n\t\tcd build \n\t\tcmake -DOPENSSL_ROOT_DIR:PATH=/usr/local/opt/openssl .. \n\t\tcmake --build .  # append '-- -j \u003cn\u003e' to run \u003cn\u003e jobs in parallel \n\n- 如果需要编译可以调试的binaries的话，可以添加一个参数到CMake\n\n\t\tcmake -DOPENSSL_ROOT_DIR:PATH=/usr/local/opt/openssl -DCMAKE_BUILD_TYPE=Debug .. \n\n***\n以上是百度IoTCore SDK的C语言版本介绍，若在其他平台上使用，请参考[如何移植百度天工IOT Core C语言SDK到其他平台](https://github.com/baidu/iot-sdk-c/blob/master/PortingGuide.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaidu%2Fiot-sdk-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaidu%2Fiot-sdk-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaidu%2Fiot-sdk-c/lists"}