编译安装 MQTT mosquitto 遇到的问题和解法
从官网(http://mosquitto.org/download/)下载了 1.3.5 的版本,解压后编译失败
:~/Downloads/mosquitto-1.3.5$ make
set -e; for d in lib client src; do /Applications/Xcode.app/Contents/Developer/usr/bin/make -C ${d}; done
cc -Wall -ggdb -O2 -I. -I.. -I../lib -fPIC -DWITH_TLS -DWITH_TLS_PSK -DWITH_THREADING -DWITH_SRV -c mosquitto.c -o mosquitto.o
In file included from mosquitto.c:46:
./mosquitto_internal.h:51:12: fatal error: 'ares.h' file not found
# include <ares.h>
缺少 ares 库,c-ares is a C library for asynchronous DNS requests (including name resolves). http://c-ares.haxx.se
下载源码: 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
然后再回到 mosquitto 的目录,就可以正常编译了。
编译完成会生成四个可执行文件:
:~/Downloads/mosquitto-1.3.5$ mosquitto
mosquitto mosquitto_passwd mosquitto_pub mosquitto_sub
开启 mosquitto 服务:
- mosquitto -c /etc/mosquitto/mosquitto.conf -d
- sudo cp lib/libmosquitto.so.1 /usr/lib
- ~/Downloads/mosquitto-1.3.5$ ldconfig
测试publish 和 subscribe:
打开两个终端
一个里面执行:
mosquitto_sub -c -h localhost -k keepalive -p 1883 -q 1 -t "mosquitto"
另一个执行
mosquitto_pub -h localhost -p 1883 -q 1 -m "./compiling.txt" -t "mosquitto"