嵌入式Linux系统libmosquitto移植

1 什么是mosquitto

1.1 什么是MQTT

简单来讲,MQTT是一个基于客户端-服务器的消息发布/订阅传输协议;类似于现在的很多新闻软件,我们订阅了某一个主题(比如体育欧冠板块),那么这个板块有新闻时你就能够收到;同时我们不订阅八卦新闻,那么就是有八卦新闻,也不会收到。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

下图可以比较清晰说明发布和订阅者之间的关系:

1.2 mosquitto

mosquitto是一个第三方开源库,是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。我们可以基于mosquitto非常简单的搭建MQTT服务器和客户端,并且能够很好的在嵌入式设备上进行应用。

2  mosquitto的交叉编译

获取mosquitto开源库同样可以通过github和官网两个方式,我们还是推荐通过官方网站来下载:https://mosquitto.org/

我们使用的版本是1.6.12

默认下载下来编译是X86,而且会有一些问题,我们需要修改Makefile,vim Makefile

这些地方都是没有什么用的,但是会导致编译问题,因此屏蔽掉!

然后我创建一个脚本文件make.sh

内容很简单:

运行 ./make.sh就可以进行交叉编译了!

没有提示error表示编译成功:

编译后我们可以在lib目录下看到生成的库文件:

同样的,需要确定文件格式是否正确:

显示是ARM aarch64表示交叉编译输出成功!

 

============================================================================================================================================================

如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648

欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击

 

笔者基于嵌入式系统框架内容如下整理编辑: