标签:service header openssl make 树结构 解压 另一个 com nts
??需要在 Linux 系统下先交叉编译好 mosquitto 再移植到开发板中,至于最后 PC 端使用 Linux 还是 Windows 都可以。
??注意事先要配置好交叉编译环境
??编译 mosquitto 需要依赖 libuuid 和 openssl。因此需要下载下面三个文件,注意最好版本保持一致,其他不保证成功:
??以下编译均在已经配置好交叉编译环境的 Linux 系统下(我使用的是 Ubuntu 18.04,交叉编译包为 arm-linux-gcc-4.3.2.tar.gz)。
tar -vxf libuuid-1.0.3.tar.gz
mkdir -p /opt/mosquitto-arm
./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux
make
make install
??报错 Permission denied,增加管理员权限:
sudo make install
??报错 arm-linux-ranlib: command not found,错误来源解释:arm-linux-ranlib: command not found
??重新输入:
su
??报错su:认证失败,解决方案来源:su 认证失败
??需要重新更新 UNIX 密码:
sudo passwd
??重新输入 su,成功进入 root 模式,再次尝试 make install,此时不再报错:
??成功编译 libuuid:
tar -vxf openssl-1.0.2g.tar.gz cd openssl-1.0.2g
??如果解压有报错,可以尝试下列命令:
tar -vxf openssl-1.0.2g.tar.gz -C openssl-1.0.2g
setarch i386 ./config no-asm shared --prefix=/opt/mosquitto-arm/openssl/
??运行结束可能会提示需要输入 make depend,照做就是,具体原因参考:make 、make clean、make depend的区别。
CC= arm-none-linux-gnueabi-gcc
AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r
RANLIB= arm-none-linux-gnueabi-ranlib
NM= arm-none-linux-gnueabi-nm
su
make
make install
??编译结束,在 /opt/mosquitto-arm/中得到一个新的文件夹 /openssl
tar -vxf mosquitto-1.5.tar.gz cd mosquitto-1.5
make WITH_SRV=no CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ CFLAGS="-I/opt/mosquitto-arm/openssl/include -I/opt/mosquitto-arm/libuuid-1.0.3/include -I/opt/mosquitto-arm/openssl/lib -I/opt/mosquit/to-arm/libuuid-1.0.3/lib" LDFLAGS="-L/opt/mosquitto-arm/openssl/lib -L/opt/mosquitto-arm/libuuid-1.0.3/lib -lssl -lcrypto -luuid"
??为了将 mosquitto 移植到开发板,需要将刚才交叉编译得到的一些文件进行打包。
??至此,所有依赖准备完毕,/Document/mqtt-arm问价夹内的二层文件树结构如下图所示:
tar -czf mqtt-arm.tar.gz mqtt-arm/
cp /mnt/usb/mqtt-arm.tar.gz ./
tar -vxf mqtt-arm.tar.gz
cp -rf libuuid-1.0.3/lib/* mosquitto-1.5/usr/local/lib/* openssl/lib/* /lib/
cp mosquitto.conf.example /etc/mosquitto.conf
mv mosquitto mosquitto_* /bin
cd /etc
vi mosquitto.conf
上下键跳到第 39 行,按 i 进入插入模式,修改文本为 user root
按下 ESC 退出插入模式,输入冒号 : 后再输入 wq 保存退出 vi 编辑界面
??至此,MQTT 就成功地移植到 iTOP-4412 开发板中了。
??这里提供 Ubuntu 和 Windows 下的配置。需要事先简单介绍的是 MQTT 协议的三个基本对象:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。三者传输 Message 的流程如下:
??由于开发板这边只有一个终端,因此 PC 端需要充当代理和发布者(订阅者)至少两个身份。
??下载并安装 mosquitto。
sudo apt-get install mosquitto
??安装 mosquitto 客户端。
sudo apt-get install mosquitto-clients
??启动 mosquitto 服务,命令如下:
service mosquitto start
??打开一个终端,订阅主题。
mosquitto_sub -h localhost -t "mqtt" -v
mosquitto_sub 表明为订阅者;
-h 表示服务器地址参数,localhost 表示服务器为本机,也可以直接输入本地 IP;
-t 表示话题(Topic),"mqtt" 为订阅的话题名;
-v 表示代码调试模式,可以输出更多的信息。
??打开另一个终端,发布主题。
mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"
-h 表示服务器地址参数,localhost 表示服务器为本机,也可以直接输入本地 IP;
-t 表示话题(Topic),"mqtt" 为发布的话题名;
-m 表示发布的 Message 内容,此时发送的是字符串 “Hello MQTT"
??不出意外的话,订阅端的终端内就会打印 Hello MQTT 字样了,说明本机 MQTT 通信完成。
??启动 mosquitto 服务,命令如下:
service mosquitto start
??打开一个终端,订阅主题。
mosquitto_sub -h localhost -t "mqtt" -v
??在开发板的超级终端输入指令,发布主题。注意这里的 IP 地址需要是你的电脑的 IP 地址。Linux 下查看 IP 地址的指令为 ifconfig。
mosquitto_pub -h 192.168.1.110 -t "mqtt" -m "Hello Mqtt"
??不出意外的话,Ubuntu 订阅端的终端内就会打印 Hello Mqtt 字样了,说明 PC 机与开发板的 MQTT 通信完成。
??启动 mosquitto 服务,命令如下:
service mosquitto start
??在开发板的超级终端输入指令,订阅主题。
mosquitto_sub -h 192.168.1.110 -t "mqtt" -v
??打开一个终端,发布主题。
mosquitto_pub -h localhost -t "mqtt" -m "Hello Mqtt"
??不出意外的话,开发板超级终端内就会打印 Hello Mqtt 字样了,说明 PC 机与开发板的 MQTT 通信完成。
??下载并安装 mosquitto-1.6.10a,下载链接:链接,注意对着自己 Windows的操作位数下载,比如我下载的就是 64 位 的。
??安装好之后,为了方便的在 cmd 里直接调用 mosquitto,还需要配置环境变量。搜索环境变量,在系统变量的 PATH 栏里编辑一个新的环境变量,路径设置为 mosquitto 的安装目录。
??配置好环境变量之后,打开 cmd,启动 mosquitto 服务器,检验是否安装成功。成功启动的画面如下图所示。
mosquitto -d -v
??之后的测试除了启动服务器的指令为上面的指令之外,订阅端和发布端的指令和 Ubuntu 测试时的是一模一样的,就不再展示了。
迅为 iTOP-4412 精英版开发板 mosquitto(MQTT协议) 移植及使用测试
标签:service header openssl make 树结构 解压 另一个 com nts
原文地址:https://www.cnblogs.com/beta-1999/p/13378058.html