本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、简介
为了学习MQTT,在树莓派上使用mosquito进行测验。
二、mosquitto安装与使用
1、mosquito的安装
# 下载mosquito-1.5.5 GitHub:https://github.com/eclipse/mosquitto
wget -c https://github.com/eclipse/mosquitto/archive/v1.5.5.tar.gz
# 解压
tar zxvf v1.5.5.tar.gz
# 进入mosquitto-1.5.5
cd mosquitto-1.5.5
# 安装mosquito编译需要的包
sudo apt install g++ libssl-dev libc-ares-dev uuid-dev xsltproc docbook-xsl
# 编译
make
# 安装
sudo make install
2、mosquitto的结束与启动
# 查看mosquitto的进程
ps -aux | grep mosquitto
# 杀死进程
kill -9 1285
# 启动
mosquitto -c /etc/mosquitto/mosquitto.conf -d
# 或
mosquitto -v
3、订阅发布测试
打开三个终端,一个终端打开mosquitto服务端 ,一个终端订阅主题,最后一个终端发布消息。
#打开mosquitto服务端
mosquitto -v
#【-v】打印更多的调试信息
#订阅主题 demo
mosquitto_sub -v -t demo
#【-t】指定主题
#【-v】打印更多的调试信息
#发布消息
mosquitto_pub -t demo -m "hello world!"
#【-t】指定主题
#【-m】指定消息内容
三、遇到的问题
1、安装mosquitto-2.0.9
未安装成功,编译时始终缺少CJSON.h头文件。
安装cJSON:
#没有cmake,所以需要先安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 下载cJSON源码
pi@raspberrypi:~ $ git clone https://github.com/DaveGamble/cJSON.git
# 进入 cJSON目录
pi@raspberrypi:~ $ cd cJSON/
# cJSON中创建build目录
pi@raspberrypi:~/cJSON $ mkdir build
# 进入build目录
pi@raspberrypi:~/cJSON $ cd build
# cmake编译
pi@raspberrypi:~/cJSON/build $ cmake ..
# make编译
pi@raspberrypi:~/cJSON/build $ make
# 编译成功进行安装
pi@raspberrypi:~/cJSON/build $ sudo make install
# 默认情况下,cJSON的头文件安装到/usr/local/include/cjson/目录下,因此编译程序的时候如果用到cJSON.h这个头文件会显示不存在
# 动态库文件安装到/usr/local/lib/目录下,相关cmake文件安装到/usr/local/lib/cmake/cJSON/目录下
# 所以我们需要将/usr/local/include/cjson/cJSON.h移动到/usr/local/include/目录下
pi@raspberrypi:~ $ sudo mv /usr/local/include/cjson/cJSON.h /usr/local/include/
安装cmake:
# 安装cmake
pi@raspberrypi:~ $ sudo apt install cmake
# 查看cmake的位置
which cmake
# 查看cmake的版本
cmake --version
# 卸载cmake
sudo apt-get autoremove cmake
但即使成功安装,最后仍旧报错!
2、安装mosquitto-1.4.5
未安装成功,编译时该结构体始终错误。
3、缺少 ares 库
# 下载源码:
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
# 解压 :
tar -zxf c-ares-1.10.0.tar.gz
# 进入目录
cd c-ares-1.10.0
# 配置
./configure
# 安装
sudo make install
4、使用过程中找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方法:修改libmosquitto.so位置
# 创建链接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# 更新动态链接库
sudo ldconfig