MQTT----client paho.mqtt.c交叉编译

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

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Paho.mqtt.embedded-c是一个开源的嵌入式C语言MQTT工程,用于在嵌入式设备上进行MQTT消息的收发。你可以在GitHub上找到该项目的代码和文档\[2\]。要使用Paho.mqtt.embedded-c,你需要进行交叉编译,并在目标机(如海思3519A/3516D)上进行测试。首先,在目录/home/nfs下创建一个名为lib_mqtt的文件夹,并进入该目录\[1\]。然后,将所需的运行库文件复制到该目录中,包括libMQTTPacketClient.so、libMQTTPacketServer.so、libpaho-embed-mqtt3c.so和libpaho-embed-mqtt3cc.so\[1\]。接下来,解压Paho.mqtt.embedded-c的SDK文件,并进入解压后的目录\[2\]。在编译代码之前,你需要确保你的代码位于/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/MQTTClient/test目录下\[3\]。然后,使用make命令编译代码\[3\]。执行文件将生成在/media/sf_share/code/mqtt/paho.mqtt.embedded-c-master/build/MQTTClient/test目录下\[3\]。请注意,执行文件只能在目标机(如海思3519A/3516D)上运行\[3\]。最后,你需要在目标机上建立运行库\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [华为摄像头(海思3519A/3516D)编译安装:paho.mqtt.embedded-c](https://blog.csdn.net/weixin_41783910/article/details/111935434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值