国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

這篇具有很好參考價值的文章主要介紹了MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實現(xiàn)的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機器與機器(M2M)通信和物聯(lián)網(wǎng)(IoT)。其在,通過衛(wèi)星鏈路通信傳感器、偶爾撥號的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。


一、mosquitto是什么?

Mosquitto實現(xiàn)了消息推送協(xié)議 MQTT v3.1 的開源消息代理軟件,提供輕量級的,支持可發(fā)布/可訂閱的的消息推送模式,使設(shè)備對設(shè)備之間的短消息通信變得簡單,比如現(xiàn)在應(yīng)用廣泛的低功耗傳感器,手機、嵌入式計算機、微型控制器等移動設(shè)備。

二、交叉編譯

交叉編譯之前,先創(chuàng)建一個目錄存放壓縮包和移植所需文件,如mkdir /home/lhq/Tools/embed。再創(chuàng)建一個存放交叉編譯后生成的文件的目錄,如mkdir /home/lhq/mosquitto。

1.交叉編譯openssl源碼

在 /home/lhq/mosquitto目錄下創(chuàng)建一個用于存放交叉編譯生成的文件的目錄ssl,mkdir /home/lhq/mosquitto/ssl

wget https://www.openssl.org/source/old/1.0.0/openssl-1.0.0.tar.gz
tar –xvf openssl-1.0.0.tar.gz
cd openssl-1.0.0/
./config no-asm shared --prefix=/home/lhq/mosquitto/ssl
export cross=arm-linux-gnueabihf-
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"

–prefix即為剛才創(chuàng)建的安裝目錄。我這里使用的交叉編譯工具鏈為arm-linux-gnueabihf-gcc。
make之后可能會報錯:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
原因是arm是32位的,打開vim Makefile去掉-m64即可。
隨后,

make install

在這里又報了一個錯:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
按照上面錯誤提示,刪除sudo rm /usr/bin/pod2man 然后再次make install
可以在安裝目錄看到編譯生成的幾個文件:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

2.交叉編譯e2fsprogs源碼

wget https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/1.41.14/e2fsprogs-1.41.14.tar.gz
tar -xvf e2fsprogs-1.41.14.tar.gz
cd e2fsprogs-1.41.14/
./configure --host=arm-linux-gnueabihf --prefix=/home/lhq/mosquitto/e2fsprogs
make
make install

–prefix為安裝目錄。
可將e2fsprogs源碼包中l(wèi)ib目錄下的uuid文件夾拷入安裝目錄:

cp -rf /home/lhq/Tools/embed/e2fsprogs-1.46.5/lib/uuid /home/lhq/mosquitto/e2fsprogs

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

3.交叉編譯c-ares源碼

wget https://c-ares.haxx.se/download/c-ares-1.14.0.tar.gz
tar -xvf c-ares-1.14.0.tar.gz
cd c-ares-1.14.0/
./configure --host=arm-linux-gnueabihf --prefix=/home/lhq/mosquitto/ares
make
make install

–prefix為安裝目錄。
在安裝目錄可以看到編譯生成的文件:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

4.交叉編譯uuid源碼

wget https://sourceforge.net/projects/libuuid/
tar -xvf libuuid-1.0.3.tar.gz
cd libuuid-1.0.3/
./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=/home/lhq/mosquitto/libuuid
make
make install

可以看到在安裝目錄下編譯生成的文件:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

5.交叉編譯mosquitto源碼

wget https://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz
tar -xvf mosquitto-1.4.8.tar.gz
cd mosquitto-1.4.8/
vim CMakeList.txt

在if(${WITH_TLS} $TREOUAL ON)后面加入:

set(OPENSSL_ROOT_DIR "/home/lhq/mosquitto/ssl")
set(OPENSSL_LIBRARIES "/home/lhq/mosquitto/ssl/lib64/")

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
路徑為openssl的安裝目錄。

在option(WITH_SRV “Include SRV lookup support?” ON)后面加入:

# Simple detect uuid
set(CMAKE_INCLUDE_PATH /home/lhq/mosquitto/e2fsprogs)
set(CMAKE_LIBRARY_PATH /home/lhq/mosquitto/e2fsprogs/uuid)
find_path(UUID_HEADER NAMES uuid/uuid.h)
if (UUID_HEADER)
    include_directories(${UUID_HEADER})
    message(STATUS "found uuid/uuid.h at:${UUID_HEADER}")
    find_library(UUID_LIBRARY NAMES uuid)
    if (UUID_LIBRARY)
        message(STATUS "found libuuid at:${UUID_LIBRARY}")
        set (LIBRARIES ${LIBRARIES} ${UUID_LIBRARY})
    else(UUID_LIBRARY)
        message(FATAL_ERROR "uuid library not found!" )
    endif (UUID_LIBRARY)
else (UUID_HEADER)
    message(WARNING "uuid library not found.")
endif (UUID_HEADER)

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
路徑為e2fsprogs和uuid的安裝目錄。

然后到mosquitto源碼lib目錄下,vim CMakeLists.txt,將第55-63行改為如下:

    # Simple detect c-ares
    find_path(ARES_HEADER ares.h /home/lhq/mosquitto/ares/include)
    if (ARES_HEADER)
        add_definitions("-DWITH_SRV")
        include_directories(${ARES_HEADER})
        message(STATUS "found ares.h at:${ARES_HEADER}")
        find_library(ARES_LIBRARY cares /home/lhq/mosquitto/ares/lib)
        if (ARES_LIBRARY)
            message(STATUS "found libcares at:${ARES_LIBRARY}")
            set (LIBRARIES ${LIBRARIES} ${ARES_LIBRARY})
        else(ARES_LIBRARY)
            message(FATAL_ERROR "not found libcares" )
        endif (ARES_LIBRARY)
    else (ARES_HEADER)
        message(WARNING "c-ares library not found.")
    endif (ARES_HEADER)
endif (${WITH_SRV} STREQUAL ON)

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

返回mosquitto源碼根目錄,在終端執(zhí)行:

cmake -DCMAKE_C_COMPILER="arm-linux-gcc" -DCMAKE_CXX_COMPILER="arm-linux-g++" -DCMAKE_INSTALL_PREFIX=/home/mosquitto/arm/mosquitto/ CMakeLists.txt

識別到了Ubuntu x86系統(tǒng)的openssl路徑。
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

這里需修改為剛才交叉編譯出來的路徑:vim CMakeCache.txt,改為如下內(nèi)容:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
再次執(zhí)行

cmake -DCMAKE_C_COMPILER="arm-linux-gcc" -DCMAKE_CXX_COMPILER="arm-linux-g++" -DCMAKE_INSTALL_PREFIX=/home/mosquitto/arm/mosquitto/ CMakeLists.txt

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
已經(jīng)識別到剛才交叉編譯出來的openssl路徑。

接下來再:

make
make install

MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
這里沒必要sudo makesudo make install,加上sudo而修改環(huán)境變量就得不償失了。
進入mosquitto安裝目錄查看,
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

6.將編譯得到的文件拷貝到開發(fā)板執(zhí)行

在開發(fā)板/usr目錄下分別創(chuàng)建ssl、uuid、mqtt、ares、e2fsprogs文件夾,將交叉編譯得到的文件分別拷入新建的目錄下,可通過nfs掛載。

拷貝成功后再配置開發(fā)板環(huán)境變量,vim /etc/profile

#mqtt start
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/ssl/lib64
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/uuid/lib
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/mqtt/lib
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/ares/lib
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/e2fsprogs/lib
export PATH=$PATH:/usr/ssl/bin
export PATH=$PATH:/usr/mqtt/bin
export PATH=$PATH:/usr/mqtt/sbin
export PATH=$PATH:/usr/e2fsprogs/bin
export PATH=$PATH:/usr/e2fsprogs/sbin
#mqtt end

之后,再source /etc/profile使環(huán)境變量生效。

再進入/usr/mqtt/bin,給mosquitto_pub、mosquitto_sub、mosquitto_passwd;/usr/mqtt/sbin,給mosquitto賦可執(zhí)行權(quán)限。

6.1測試

mosquitto_sub -t test ,再打開一個終端,mosquitto_pub -t test -m "hello world"??梢钥吹?,訂閱和發(fā)布都能成功。
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺

6.2錯誤解決

如果網(wǎng)絡(luò)已經(jīng)連通,出現(xiàn)如下錯誤,可這樣考慮解決:
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
執(zhí)行:

mosquitto -c /usr/mqtt/etc/mosquitto/mosquitto.conf

再執(zhí)行訂閱和發(fā)布即可。

如果執(zhí)行mosquitto -c /usr/mqtt/etc/mosquitto/mosquitto.conf時出現(xiàn)如下錯誤:
1672122706:Error:Invalid user ‘mosquitto’
可將上面的mosquitto.conf文件的#user mosquitto下加上user root。
MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺
或者adduser mosquitto新增一個普通用戶,再執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-463898.html


到了這里,關(guān)于MQTT協(xié)議版本Mosquitto移植到嵌入式arm平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 嵌入式Linux下LVGL的移植與配置

    嵌入式Linux下LVGL的移植與配置

    ???????https://github.com/lvgl/lvgl git下載方式 git clone?https://github.com/lvgl/lvgl.git 鏈接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwd=c68e? 提取碼:c68e 注意: 以下的配置均基于個人移植的sdk上修改. 解壓sdk源碼后修改Makefile文件,修改如下 直接修改編譯器(編譯器需要添加進系統(tǒng)的

    2024年02月13日
    瀏覽(20)
  • 物聯(lián)網(wǎng)實戰(zhàn)--入門篇之(七)嵌入式-MQTT

    物聯(lián)網(wǎng)實戰(zhàn)--入門篇之(七)嵌入式-MQTT

    目錄 一、MQTT簡介 二、MQTT使用方法 三、MQTT驅(qū)動設(shè)計 四、代碼解析 五、使用過程 六、總結(jié) 一、MQTT簡介 ? ? ? ? MQTT因為其輕量、高效和穩(wěn)定的特點,特別適合作為物聯(lián)網(wǎng)系統(tǒng)的數(shù)據(jù)傳輸協(xié)議,已經(jīng)成為物聯(lián)網(wǎng)事實上的通信標準了。關(guān)于協(xié)議的具體內(nèi)容看看這篇文章和官方文

    2024年04月08日
    瀏覽(25)
  • 嵌入式Linux底層系統(tǒng)開發(fā) +系統(tǒng)移植+內(nèi)核文件系統(tǒng)(基礎(chǔ))

    嵌入式Linux底層系統(tǒng)開發(fā) +系統(tǒng)移植+內(nèi)核文件系統(tǒng)(基礎(chǔ))

    搭建交叉編譯開發(fā)環(huán)境 bootloader的選擇和移植 kernel的配置、編譯、移植和調(diào)試 根文件系統(tǒng)的制作 前兩個要點通常芯片廠家提供。后邊兩個要點是公司的工作重點。 學習方法:先整體后局部,層層推進 如何編譯—如何添加命令和功能—如何定義自己的開發(fā)板。 移植的基本步

    2024年02月03日
    瀏覽(102)
  • 【LVGL】學習筆記--(1)Keil中嵌入式系統(tǒng)移植LVGL

    【LVGL】學習筆記--(1)Keil中嵌入式系統(tǒng)移植LVGL

    最近emwin用的比較煩躁,同時被LVGL酷炫的界面吸引到了,所以準備換用LVGL試試水。 LVGL(輕量級和通用圖形庫)是一個免費和開源的圖形庫,它提供了創(chuàng)建嵌入式GUI所需的一切,具有易于使用的圖形元素,美麗的視覺效果和低內(nèi)存占用。 豐富且強大的模塊化圖形組件:按鈕 (b

    2024年02月02日
    瀏覽(20)
  • 基于嵌入式linux的OpenSSL源碼移植(基于arm64)

    基于嵌入式linux的OpenSSL源碼移植(基于arm64)

    SSL是Secure Sockets Layer(安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協(xié)議標準。其目標是保證兩個應(yīng)用間通信的保密性和可靠性,可在服務(wù)器端和用戶端同時實現(xiàn)支持。已經(jīng)成為Internet上保密通訊的工業(yè)標準。

    2024年02月11日
    瀏覽(20)
  • 嵌入式linux驅(qū)動開發(fā)之移遠4G模塊EC800驅(qū)動移植指南

    嵌入式linux驅(qū)動開發(fā)之移遠4G模塊EC800驅(qū)動移植指南

    回顧下移遠4G模塊移植過程, 還是蠻簡單的。一通百通,無論是其他4G模塊都是一樣的。這里記錄下過程,分享給有需要的人。環(huán)境使用正點原子的imax6ul開發(fā)板,板子默認支持中興和移遠EC20的驅(qū)動,這里要移植使用的是移遠4G模塊EC800。 imax6ul開發(fā)板 虛擬機(Ubuntu18.04) 交叉編譯

    2024年02月17日
    瀏覽(52)
  • 基于RK3588的嵌入式linux系統(tǒng)開發(fā)(二)——uboot源碼移植及編譯

    基于RK3588的嵌入式linux系統(tǒng)開發(fā)(二)——uboot源碼移植及編譯

    ??????? 由于官方的SDK占用空間較大(大約20GB左右),需要聯(lián)系相關(guān)供應(yīng)商提供,且官方的SDK通過各種腳本文件進行集成編譯,難以理解系統(tǒng)開發(fā)的詳細過程。本章介紹直接從官方Github網(wǎng)站下載源碼進行移植,進行uboot移植及編譯,具體內(nèi)容如下所述: 1.進入官方的github網(wǎng)

    2024年01月16日
    瀏覽(28)
  • (三)內(nèi)核移植--從零開始自制linux掌上電腦(F1C200S)<嵌入式項目>

    (三)內(nèi)核移植--從零開始自制linux掌上電腦(F1C200S)<嵌入式項目>

    目錄 一、bootloader、kernel、rootfs聯(lián)系 二、內(nèi)核移植 1. 內(nèi)核源碼獲取 2. 內(nèi)核配置與編譯 ?? 基礎(chǔ)配置與編譯 ?? TF卡分區(qū) ?? 內(nèi)核燒錄 三、參考內(nèi)容 kernel可以理解為一個 龐大的裸機程序 ,和uboot以及其他比如點燈類似的裸機程序沒有本質(zhì)區(qū)別,只是kernel分為 用戶態(tài)和內(nèi)核態(tài)

    2024年02月15日
    瀏覽(92)
  • 嵌入式linux之iMX6ULL驅(qū)動開發(fā) | 移遠4G模塊EC800驅(qū)動移植指南

    嵌入式linux之iMX6ULL驅(qū)動開發(fā) | 移遠4G模塊EC800驅(qū)動移植指南

    回顧下移遠4G模塊移植過程, 還是蠻簡單的。一通百通,無論是其他4G模塊都是一樣的。這里記錄下過程,分享給有需要的人。環(huán)境使用正點原子的imax6ul開發(fā)板,板子默認支持中興和移遠EC20的驅(qū)動,這里要移植使用的是移遠4G模塊EC800。 imax6ul開發(fā)板 虛擬機(Ubuntu18.04) 交叉編譯

    2024年02月12日
    瀏覽(29)
  • 五種嵌入式經(jīng)典通信總線協(xié)議

    五種嵌入式經(jīng)典通信總線協(xié)議

    并行通信和串行通信是兩種不同的數(shù)據(jù)傳輸方式: 并行通信:并行通信是指在同一時間使用多條并行傳輸?shù)木€路傳輸多個比特的數(shù)據(jù)。每個比特使用獨立的線路進行傳輸,同時進行。這樣可以在一個時鐘周期內(nèi)傳輸多個比特,提高傳輸速率。并行通信常用于短距離高速數(shù)據(jù)傳

    2024年01月17日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包