您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“mqtt移植的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“mqtt移植的方法是什么”吧!
移植環(huán)境
Ubuntu:迅為提供的 ubuntu16.04
編譯器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
MOTT 介紹
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基
于發(fā)布/訂閱(publish/subscribe)模式的輕量級(jí)協(xié)議,該協(xié)議構(gòu)建于 TCP/IP 協(xié)議之上,
MQTT 最大優(yōu)點(diǎn)在于,可以以極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消
息服務(wù)。作為一種低開銷、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用
等方面有較廣泛的應(yīng)用。
我們這里使用的是 Mosquitto,Mosquitto 是 MQTT 的實(shí)現(xiàn)方法,因?yàn)?MQTT 是一種
協(xié)議,就好比 Linux 和 Ubuntu 的關(guān)系。Ubuntu 是 Linux 的發(fā)行版之一,而 Mosquitto 是
MQTT 的實(shí)現(xiàn)方法之一,為什么我們的這里使用的是 Mosquitto 而不是其他的實(shí)現(xiàn)方法呢,
因?yàn)?Mosquitto 功能強(qiáng)大,不僅可以作為消息的發(fā)布者和訂閱者,也可以做為服務(wù)器。其他
工具有的功能他基本都有,所以我們使用的是 Mosquitto。
一.在 X86 上安裝 mosquitto
使用 apt-get 安裝 mosquitto,命令如下:
apt-get install mosquitto
安裝 mosquitto 客戶端, 命令如下:
apt-get install mosquitto-clients
二.在 x86 上測(cè)試 mosquitto
我們現(xiàn)在本機(jī) X86 上進(jìn)行簡單的測(cè)試并熟悉相關(guān)的命令。
測(cè)試步驟:
(1)啟動(dòng)服務(wù) mosquitto
(2)訂閱者通過 mosquitto_sub 訂閱指定主題的消息。
(3)發(fā)布者通過 mosquitto_pub 發(fā)布指定主題的消息。
步驟一
開啟 mosquitto 服務(wù),命令如下:
service mosquitto start
查看 mosquitto 是否啟動(dòng)成功,命令如下:
ps -ef | grep mosquitto
啟動(dòng)成功如下圖所示:
步驟二
打開一個(gè)終端,訂閱主題,命令如下:
mosquitto_sub -h localhost -t "mqtt" -v
其中參數(shù)-h 是指定要連接的 MQTT 服務(wù)器,這里使用的是本機(jī),也可以直接使用本機(jī)的 IP,-t 訂閱主題,此處為 mqtt,所以主題為 mqtt,-v 打印更多的調(diào)試信息。
如下圖所示:
步驟三
打開另一個(gè)終端,(注意這里我們又新打開了一個(gè)終端)發(fā)布主題,命令如下:
mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"
其中參數(shù)-h 是指定要連接的 MQTT 服務(wù)器,這里連接的是本機(jī),所以是 localhost,也
可以是要連接的設(shè)備的 IP 地址,-t 訂閱主題,此處為 mqtt,-m 指定消息內(nèi)容,這里發(fā)送的是 Hello MQTT。
如下圖所示:
發(fā)送成功以后,mqtt 的訂閱端會(huì)收到我們的發(fā)布的信息 Hello MQTT,如下圖所示:
三.移植 mosquitto 到開發(fā)板
mqtt 源碼下載頁:
https://mosquitto.org/files/source/
Mosquitto 庫依賴 libuuid 和 openssl 庫,所以我們?cè)诮徊婢幾g Mosquitto 之前需要先交叉編譯他所需要的依賴庫,這里作者已經(jīng)把需要的源碼都下載好了,大家可以在這個(gè)文檔的目錄下找到。不建議大家下載和我不一致的版本,可能會(huì)出問題。
1. 交叉編譯 uuid 庫
我們把 uuid 的源碼拷貝到 Ubuntu,作者是拷貝拷貝到了/home/topeet/mqtt 下面,如下圖所示:
輸入以下命令,解壓源碼并進(jìn)入解壓生成的文件夾:
tar -vxf libuuid-1.0.3.tar.gz
如下圖所示:
然后我們?cè)?opt/下創(chuàng)建一個(gè)名為 mosquitto-arm 的文件夾,命令如下:
mkdir -p /opt/mosquitto-arm
如下圖所示:
配置源碼,我們?cè)诮鈮荷傻?nbsp;uuid 庫的文件夾輸入以下命令:
./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux
如下圖所示:
最后,編譯并安裝,命令如下:
make
make install
編譯并安裝成功后會(huì)在我們?cè)O(shè)置/opt/mosquitto-arm 下得到一個(gè) libuuid 的文件夾
2. 交叉編譯 openssl 庫
解壓壓縮包進(jìn)進(jìn)入解壓后的目錄
tar -vxf openssl-1.0.2g.tar.gz cd openssl-1.0.2g
如下圖所示。作者是放在了/home/topeet/mqtt 目錄下
配置編譯參數(shù)
setarch i386 ./config no-asm shared --prefix=/opt/mosquitto-arm/openssl/
setarch i386:聲明生成的是 32 位 CPU,如果是 64 位 CPU 則去除該部分
--prefix :指定 make install 后生成目錄的路徑,不修改此項(xiàng)則默認(rèn)為 OPENSSLDIR
目錄(/usr/local/ssl)。
shared :生成動(dòng)態(tài)連接庫。
no-asm: 是在交叉編譯過程中不使用匯編代碼代碼加速編譯過程,原因是它的匯編代碼是對(duì) arm 格式不支持的
如果 Makefile 中有 -m32 和-m64 就刪掉 -m32 和-m64,但是我的 Makefile 中沒有,就沒管這個(gè)。
如下圖所示:
修改 openss 文件夾下的 Makefile 里面的編譯器參數(shù)如下
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
如下圖所示:
編譯并安裝
make
make install
編譯并安裝成功后會(huì)在我們?cè)O(shè)置/opt/mosquitto-arm 下得到一個(gè) openssl 的文件夾
3.交叉編譯 mosquitto
解壓壓縮包進(jìn)進(jìn)入解壓后的目錄
tar -vxf mosquitto-1.5.tar.gz cd mosquitto-1.5
如下圖所示。作者是放在了/home/topeet/mqtt 目錄下
編譯源碼
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"
注意,如果大家這里安裝 uuid 和 openssl 的庫的時(shí)候路徑和我的不一致,要把-I 和-L 指
定的庫和頭文件的路徑修改成自己對(duì)應(yīng)安裝 uuid 和 openssl 庫的路徑,否則編譯不過去。
如下圖所示:
編譯成功如下圖所示:
安裝,命令如下
make DESTDIR=/opt/mosquitto-arm/mosquitto-1.5 install
編譯并安裝成功后會(huì)在我們?cè)O(shè)置/opt/mosquitto-arm 下得到一個(gè) mosquitto-1.5 的文件夾
到此,相信大家對(duì)“mqtt移植的方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。