paho.mqtt.c github地址:https://github.com/eclipse/paho.mqtt.c

openssl github地址: https://github.com/openssl/openssl

因为在编译paho.mqtt.c时会使用到openssl这个库,所以在交叉编译paho.mqtt.c这个库之前,我们首先需要对openssl进行交叉编译。

1. 创建MQTT_Client_SDK

我们首先新建一个MQTT_Client_SDK文件夹,接着在其中创建openssl_1.1.1b文件夹和paho.mqtt_1.3.0文件夹,在这两个文件夹均创建lib和include文件夹,用于存放交叉编译生成的so库和头文件。

首先我们根据上面的github网址下载有 openssl-OpenSSL_1_1_1b.tar.gz   paho.mqtt.c-1.3.0.tar.gz

2.openssl交叉编译步骤

1)  tar xvf openssl-OpenSSL_1_1_1b.tar.gz

2) cd openssl-OpenSSL_1_1_1b

3) ./config no-asm shared --prefix=$PWD/install --cross-compile-prefix=aarch64-linux-gnu-

no-asm 表示不使用汇编代码

shared 表示生成动态库

--prefix 表示生成的库、头文件、bin等的路径

--cross-compile-prefix 表示使用的交叉编译链工具

修改openssl-OpenSSL_1_1_1b文件夹目录下的Makefile,删除其中所有的 -m64 编译选项(此Makefile中有两处).

4)  make

5)  make install

最终在 openssl-OpenSSL_1_1_1b中的install目录下包含 bin  include  lib  share  ssl 五个文件夹,而我们使用的主要是其中的include 和 lib文件夹。将lib include两个文件夹下的文件拷贝到 openssl_1.1.1b目录下对应的lib和include目录下。

3. 交叉编译paho.mqtt.c

1)  tar xvf paho.mqtt.c-1.3.0.tar.gz

2)  cd paho.mqtt.c-1.3.0

3)  修改文件夹根目录下的Makefile文件

122行的修改编译工具      CC ?= gcc ======>  CC := aarch64-linux-gnu-gcc 

(:=表示指定编译工具     ?= 表示如果前面未指定编译工具则使用此处指定的编译工具)

在129行下面添加

         CFLAGS  := -I$(PWD)/../openssl_1.1.1b/include

         LDFLAGS := -L$(PWD)/../openssl_1.1.1b/lib

修改后保存该Makefile

4)  make

执行make命令后会在当前目录下创建一个build/output目录,将里面的so库拷贝到paho.mqtt_1.3.0/lib目录下,然后将源码主目录src文件夹里面的头文件拷贝到paho.mqtt_1.3.0/include目录下即可。

4.验证demo

交叉编译完openssl和paho.mqtt.c,基本的mqtt客户端sdk组成了,接下来我们需要写一个简单的demo用于验证该sdk的功能。

这里的验证我们可以使用paho.mqtt.c-1.3.0/src/samples/目录下的 MQTTClient_publish.c 和  MQTTClient_subscribe.c两个文件。我们适当的修改一下这两个源代码。文章最后我会贴出整个sdk的源代码可自行查看修改部分。

接下来我们只需要写一个Makefile即可,具体如何写这个Makefile可以参考我的另一篇博客 https://blog.csdn.net/zz531987464/article/details/90183836

其最终的实现的效果是:

        订阅程序shared_subscribe 订阅的topic是test321,消息级别为QoS2

       发布程序shared_publish 发布的topic是test321,消息级别为QoS2,消息本身为“message=xx”

        同时可以记录消息发送和订阅到的条数,方便进行数据的对比和确认。

sdk下载路径为:https://download.csdn.net/download/zz531987464/11181042

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐