1. 安装MQTT服务器
上网搜索apache activemq,找到它的官网。然后下载Linux版本。写文档时版本为ActiveMQ 5.16.3 Release
解压后进入目录,运行:./bin/activemq console
即可启动服务
2. 安装MQTT 客户端
在https://github.com/eclipse/paho.mqtt.c下载安装包并解压,进入目录。
make
报错,然后sudo apt install libssl-dev
make成功
make install
注意,这里直接make,不是去build文件夹下make。
运行MQTT自带示例。
发布程序示例:
在mqtt工程的src/samples目录下,打开MQTTClient_publish.c。
通过修改#define ADDRESS设置服务器地址,只改IP,端口不要改。
修改#define PAYLOAD 设置消息内容。
修改#define TOPIC修改发布主题。
订阅程序示例:
在mqtt工程的src/samples目录下,打开MQTTClient_subscribe.c
通过修改#define ADDRESS设置服务器地址。
修改#define TOPIC修改订阅主题。主题与发布者一致时,可收到发布的消息。
然后重新make,在build/output/samples会有生成文件,执行MQTTClient_publish和MQTTClient_subscribe就可以看到通信。
交叉编译:
在Makefile中有一行CC ?= gcc,需要注释掉
有个工具链有自带的环境变量配置文件,需要source一下(比如$source /opt/poky/1.2.3/environment-setup-aarch64-poky-linux),然后在同一个终端里执行make,这样可以不用指定CC路径。如果没有找到配置文件,则执行
make CC=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc CXX=/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++
/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-g++和/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc需要根据具体交叉编译工具链的路径和名称来修改。
CXX或者CC需要看Makefile中用到哪个,没有用到的可以不指定。
指定安装路径可以使用以下两种方法。
export DESTDIR=/INSTALL/DIR
make install
或
make DESTDIR=/install/directory install
将编译成功的库文件复制到目标板上。
如果有问题欢迎一起讨论。