1.paho mqtt官方仓库地址:
https://github.com/eclipse/paho.mqtt.c.git
2.打开项目,找到项目根目录下的Makefile,关注如下两个地方:
1.编译器:Makefile的126行
2.库安装路径:Makefile的70行


3.编译
如果在Ubuntu使用paho mqtt,直接使用gcc(任何东西都不用修改),直接执行make命令即可。
make
sudo make install

执行make后会在当前目录下创建一个build目录,源码和例程编译出来的可执行文件都在里面。

这条指令会将mqtt程序依赖的库文件安装到/usr/local下的bin、lib、include和share下。
4.测试mqtt
copy官方示例代码,需要修改:url、客户端ID、用户名、密码。
1.拷贝src目录下所有的文件到测试demo下(sample文件夹除外)
2.随便拷贝/src/sample目录下的一个文件到测试demo下。
下面以 MQTTAsync开头的例程作为测试工程的demo,其表示的是MQTT的异步通信收发,依赖的库是libpaho-mqtt3a。
另外:如果是MQTTClient开头的,依赖的库就是libpaho-mqtt3c
如果自己写代码还会用到SSL的话,依赖的库就会变成libpaho-mqt3cs或者ibpaho-mqtt3as
如何确定使用的是Async还是Client,
根据自己写的代码里面包含的头文件是MQTTAsync.h还是MQTTClient.h,比如测试demo MQTTAsync_subscribe.c 包含头文件"MQTTAsync.h"。
3.修改ADDRESS和CLIENTID以及订阅的TOPIC,还要添加阿里云物联网平台设备的用户名USERNAME和密码PASSWORD:

4.编译测试demo
5.运行
二:移植mqtt到linux开发板
1.操作步骤和ubuntu下的方法一样,只是需要编译出板端运行需要的动态库"libpaho-mqtt3a.so"、"libpaho-mqtt3as.so","libpaho-mqtt3c.so","libpaho-mqtt3cs.so"等等。
1.1 注意需要额外在链接标记里面添加板端编译环境的sysroot路径下的lib地址。

2.遇到的问题:编译上述动态库的时候会依赖《openssl-3.4.1》的库,所以需要提前编译"openssl-3.4.1",有两种方法:

1. openssl 官网下载源码,自己编译;
2.去已经编译好的buildroot目录下寻找需要的库,然后放进交叉编译器的sysroot/usr/lib路径下,头文件可以在/usr/include路径下或buildroot路径下寻找,然后放到sysroot/usr/include路径下即可。
3.make&sudo make install
浙公网安备 33010602011771号