交叉编译 Azure IoT SDK for C

Cross-compiling Azure IoT SDK for C

我已经成功地为目标设备 运行 嵌入式 Linux 交叉编译了 C Azure IoT SDK。说明在这里:https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/SDK_cross_compile_example.md

下一步是在目标设备上使用 SDK 运行 获取基本应用程序。

人们会怎么做呢?生成的库等在哪里复制到目标设备的 sysroot。

好像只支持树莓派和生成新的固件镜像。

我建议您在生成 makefile 时使用 -DCMAKE_INSTALL_PREFIX=[输出路径]。一旦你有了 运行 cmake 和 make,你就可以 运行 make install 将生成的库复制到你选择的位置。您不想将它们安装到主机的库搜索路径中,因为(大概)它们是为不兼容的体系结构构建的。完成后,/lib 目录将包含构建应用程序所需的库。这些是静态库(除非您另有选择),因此它们只需要链接到您的应用程序。它们不需要在设备上。显然,您还需要交叉编译您的应用程序。

不过,您需要注意一些事项。您的设备需要具有与构建 SDK 时使用的相同版本的 OpenSSL 和 curl。这些是动态库,因此如果您不注意这些,您的应用程序可能会在 运行 时失败,因为版本不匹配。

这里还有一个交叉编译的例子:https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/Docker_SDK_Cross_Compile.md。此版本还构建了先决条件库,并提供了有关如何交叉编译应用程序的建议。它使用 Docker 容器来执行此操作,但即使您不想使用 Docker,它仍然可以帮助您完成此过程。