#打卡不停更#huaweicloud-iot交叉编译使用 原创
@toc
1. 前言
源码下载:https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c
huaweicloud-iot-device-sdk-c(以下简称SDK)帮助设备用MQTT协议快速连接到华为物联网平台。
2.SDK简介
SDK面向运算、存储能力较强的嵌入式终端设备,开发者通过调用SDK接口,便可实现设备与物联网平台的上下行通讯。SDK当前支持的功能有:
支持物模型:设备消息/属性/事件上报,设备命令/消息/属性/事件接收
支持子设备消息转发、子设备管理
支持OTA升级
支持**认证和证书认证两种设备接入方式
支持自定义topic
支持设备影子查询
支持自定义日志收集能力
3.交叉编译源码(以mips-linux-gnu-gcc为例)
3.1 编译zlib
1.下载zlib源码https://github.com/madler/zlib/archive/v1.2.11.zip 通过如下命令解压缩:
unzip zlib-1.2.11.zip
2.进入源码目录下:
cd zlib-1.2.11
3.配置生成makefile文件
export CC=mips-linux-gnu-gcc
./configure --prefix=/home/weimin/test/iot_libs/bin
4.执行makefile文件
make && make install
在--prefix=指定的目录下生成ibz.so、libz.so.1、libz.so.1.2.11等文件。
3.2 编译openssl
1.访问openssl官网https://www.openssl.org/source ,下载最新版本openssl(如openssl-1.1.1d.tar.gz),上传到linux编译机上(以上传到目录/home/test为例),并使用如下命令解压:
tar -zxvf openssl-1.1.1d.tar.gz
2.执行以下命令进入openssl源码目录:
cd openssl-1.1.1d
3.配置生成makefile文件
./config no-asm shared --prefix=/home/weimin/test/iot_libs/bin --openssldir=/home/weimin/test/iot_libs/bin CROSS_COMPILE=mips-linux-gnu- CC=gcc
4.编译出库。 在openssl源码目录下,运行make depend命令添加依赖:
make depend
运行make命令开始编译:
make
再运行如下命令进行安装:
make install
在配置的openssl安装目录下–prefix=指定目录下找到lib目录,有生成的库文件:
libcrypto.so.1.1、libssl.so.1.1和软链接libcrypto.so、libssl.so
3.3 编译paho
1.访问github下载地址https://github.com/eclipse/paho.mqtt.c, 下载最新版本。
2.解压paho.mqtt.c-1.3.10.tar.gz 文件
tar -xvf paho.mqtt.c-1.3.10.tar.gz
3.进入paho.mqtt.c-1.3.10目录下
cd paho.mqtt.c-1.3.10
4.新建目录和进入新建目录下
mkdir build_mips
cd build_mips
5.执行cmake命令
cmake .. -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_STATIC=TRUE -DCMAKE_C_COMPILER=mips-linux-gnu-gcc -DOPENSSL_ROOT_DIR=/home/weimin/test/iot_libs/bin -DCMAKE_INSTALL_PREFIX=/home/weimin/test/iot_libs/bin -DCMAKE_SYSTEM_NAME=Linux
6.执行编译命令
make && make install
在-DCMAKE_INSTALL_PREFIX=指定的目录下会生成
libpaho-mqtt3as.so和libpaho-mqtt3as.so.1
注意:paho.mqtt.c将使能ssl编译,就是有libpaho-mqtt3as库了
3.5 编译sdk
1.删除huaweicloud-iot-device-sdk-c/lib/目录下的x86-64的库;拷贝交叉编译好的库/home/weimin/test/iot_libs/bin/lib到这个目录huaweicloud-iot-device-sdk-c/lib/下
2.修改CC=gcc为CC =mips-linux-gnu-gcc
3.去掉Makefile中的-m64
执行编译命令:
make
注意:如果编译过程缺少库,则从源码中拷贝/home/weimin/test/iot_libs/bin目录下的include文件到huaweicloud-iot-device-sdk-c/include目录下