91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mqtt移植的方法是什么

發布時間:2021-12-07 09:08:55 來源:億速云 閱讀:251 作者:iii 欄目:互聯網科技

本篇內容主要講解“mqtt移植的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“mqtt移植的方法是什么”吧!

移植環境
Ubuntu:迅為提供的 ubuntu16.04
編譯器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
MOTT 介紹
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基
于發布/訂閱(publish/subscribe)模式的輕量級協議,該協議構建于 TCP/IP 協議之上,
MQTT 最大優點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消
息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用
等方面有較廣泛的應用。
我們這里使用的是 Mosquitto,Mosquitto 是 MQTT 的實現方法,因為 MQTT 是一種
協議,就好比 Linux 和 Ubuntu 的關系。Ubuntu 是 Linux 的發行版之一,而 Mosquitto 是
MQTT 的實現方法之一,為什么我們的這里使用的是 Mosquitto 而不是其他的實現方法呢,
因為 Mosquitto 功能強大,不僅可以作為消息的發布者和訂閱者,也可以做為服務器。其他
工具有的功能他基本都有,所以我們使用的是 Mosquitto。

一.在 X86 上安裝 mosquitto
使用 apt-get 安裝 mosquitto,命令如下:
apt-get install mosquitto
安裝 mosquitto 客戶端, 命令如下:
apt-get install mosquitto-clients


二.在 x86 上測試 mosquitto
我們現在本機 X86 上進行簡單的測試并熟悉相關的命令。
測試步驟:
(1)啟動服務 mosquitto
(2)訂閱者通過 mosquitto_sub 訂閱指定主題的消息。
(3)發布者通過 mosquitto_pub 發布指定主題的消息。
步驟一
開啟 mosquitto 服務,命令如下:
service mosquitto start
查看 mosquitto 是否啟動成功,命令如下:
ps -ef | grep mosquitto
啟動成功如下圖所示:

mqtt移植的方法是什么

步驟二

打開一個終端,訂閱主題,命令如下:

mosquitto_sub -h localhost -t "mqtt" -v

其中參數-h 是指定要連接的 MQTT 服務器,這里使用的是本機,也可以直接使用本機的 IP,-t 訂閱主題,此處為 mqtt,所以主題為 mqtt,-v 打印更多的調試信息。

如下圖所示:

mqtt移植的方法是什么

步驟三

打開另一個終端,(注意這里我們又新打開了一個終端)發布主題,命令如下:

mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"

其中參數-h 是指定要連接的 MQTT 服務器,這里連接的是本機,所以是 localhost,也

可以是要連接的設備的 IP 地址,-t 訂閱主題,此處為 mqtt,-m 指定消息內容,這里發送的是 Hello MQTT。

如下圖所示:

mqtt移植的方法是什么
發送成功以后,mqtt 的訂閱端會收到我們的發布的信息 Hello MQTT,如下圖所示:
mqtt移植的方法是什么

三.移植 mosquitto 到開發板

mqtt 源碼下載頁:

https://mosquitto.org/files/source/

Mosquitto 庫依賴 libuuid 和 openssl 庫,所以我們在交叉編譯 Mosquitto 之前需要先交叉編譯他所需要的依賴庫,這里作者已經把需要的源碼都下載好了,大家可以在這個文檔的目錄下找到。不建議大家下載和我不一致的版本,可能會出問題。

1. 交叉編譯 uuid 庫

我們把 uuid 的源碼拷貝到 Ubuntu,作者是拷貝拷貝到了/home/topeet/mqtt 下面,如下圖所示:

mqtt移植的方法是什么
輸入以下命令,解壓源碼并進入解壓生成的文件夾:
tar -vxf libuuid-1.0.3.tar.gz
如下圖所示:
mqtt移植的方法是什么
然后我們在/opt/下創建一個名為 mosquitto-arm 的文件夾,命令如下:
mkdir -p /opt/mosquitto-arm
如下圖所示:
mqtt移植的方法是什么

配置源碼,我們在解壓生成的 uuid 庫的文件夾輸入以下命令:

./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux

如下圖所示:

mqtt移植的方法是什么
最后,編譯并安裝,命令如下:
make
make install
編譯并安裝成功后會在我們設置/opt/mosquitto-arm 下得到一個 libuuid 的文件夾
mqtt移植的方法是什么
2. 交叉編譯 openssl 庫
解壓壓縮包進進入解壓后的目錄
tar -vxf openssl-1.0.2g.tar.gz cd openssl-1.0.2g
如下圖所示。作者是放在了/home/topeet/mqtt 目錄下
mqtt移植的方法是什么

配置編譯參數

setarch i386 ./config no-asm shared --prefix=/opt/mosquitto-arm/openssl/

setarch i386:聲明生成的是 32 位 CPU,如果是 64 位 CPU 則去除該部分

--prefix :指定 make install 后生成目錄的路徑,不修改此項則默認為 OPENSSLDIR

目錄(/usr/local/ssl)。

shared :生成動態連接庫。

no-asm: 是在交叉編譯過程中不使用匯編代碼代碼加速編譯過程,原因是它的匯編代碼是對 arm 格式不支持的

如果 Makefile 中有 -m32 和-m64 就刪掉 -m32 和-m64,但是我的 Makefile 中沒有,就沒管這個。

如下圖所示:

mqtt移植的方法是什么
修改 openss 文件夾下的 Makefile 里面的編譯器參數如下
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
如下圖所示:
mqtt移植的方法是什么
編譯并安裝
make
make install
編譯并安裝成功后會在我們設置/opt/mosquitto-arm 下得到一個 openssl 的文件夾
mqtt移植的方法是什么
3.交叉編譯 mosquitto
解壓壓縮包進進入解壓后的目錄
tar -vxf mosquitto-1.5.tar.gz cd mosquitto-1.5
如下圖所示。作者是放在了/home/topeet/mqtt 目錄下
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 的庫的時候路徑和我的不一致,要把-I 和-L 指

定的庫和頭文件的路徑修改成自己對應安裝 uuid 和 openssl 庫的路徑,否則編譯不過去。

如下圖所示:

mqtt移植的方法是什么
編譯成功如下圖所示:
mqtt移植的方法是什么

安裝,命令如下

make DESTDIR=/opt/mosquitto-arm/mosquitto-1.5 install

編譯并安裝成功后會在我們設置/opt/mosquitto-arm 下得到一個 mosquitto-1.5 的文件夾

mqtt移植的方法是什么

到此,相信大家對“mqtt移植的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南丹县| 富蕴县| 寿宁县| 开封市| 泾阳县| 栾川县| 关岭| 确山县| 新疆| 明溪县| 彰化市| 临清市| 白河县| 曲周县| 南平市| 梁山县| 临泽县| 铁岭县| 鹰潭市| 仁化县| 万盛区| 邻水| 东乡族自治县| 墨江| 昭苏县| 芦山县| 延津县| 肥城市| 洪泽县| 庆安县| 图木舒克市| 黄陵县| 凤凰县| 鄂尔多斯市| 龙胜| 久治县| 德保县| 襄垣县| 奉节县| 敖汉旗| 平江县|