交叉编译Azure IoT SDK的C语言版本。

问题描述 投票:0回答:1

我已经成功地为运行嵌入式Linux的目标设备交叉编译了C Azure IoT SDK。说明书在这里 。https:/github.comAzureazure-iot-sdk-cblobmasterdocSDK_cross_compile_example.md。

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

要如何去做呢?要把生成的库等复制到目标设备的sysroot中。

似乎只支持Rasberry Pi和生成一个新的固件镜像。

c cross-compiling embedded-linux azure-iot-hub azure-iot-sdk
1个回答
1
投票

我建议你在生成makefile时使用-DCMAKE_INSTALL_PREFIX=[output path]。一旦你运行了 cmake 和 make,你就可以运行 make install,它将把生成的库复制到你选择的位置。你不希望把它们安装到你的主机的库搜索路径中,因为(可能)它们是为不兼容的架构构建的。这样做之后,lib目录下就会有你需要用来构建应用程序的库。这些都是静态库(除非你另有选择),所以它们只需要链接到你的应用程序。它们不需要在设备上。显然,你还需要交叉编译你的应用程序。

不过有几件事你需要注意。你的设备需要有和你构建SDK时使用的相同版本的OpenSSL和curl。这些都是动态库,所以如果你不注意这一点,你的应用很可能在运行时失败,因为会出现版本不匹配的情况。

这里还有一个交叉编译的例子。https:/github.comAzureazure-iot-sdk-cblobmasterdocDocker_SDK_Cross_Compile.md。. 这个版本还构建了先决库,并有关于如何也交叉编译你的应用程序的建议。它使用一个Docker容器来做这件事,但是,即使你不想使用Docker,它仍然可能帮助你的过程。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.