色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式Linux下QT移植MQTT的方法

CHANBAEK ? 來源:嵌入式大本營 ? 作者:小小飛飛哥 ? 2023-05-23 15:45 ? 次閱讀

環境:

Ubuntu18.04

開發板:debian

交叉編譯工具鏈:arm-linux-gnueabihf-gcc 8.3.0

Qt:Qt5.11.2

解決方案在文末,如不想看中間過程,可直接跳轉到文末。

mqtt是一種工業物聯網協議,可以用來連接阿里云、百度云、onenet等云端,應用廣泛。

關于mqtt的使用,網上資料主要有以下幾種:

1、STM32+ESP8266:這種方式主要是借助ESP8266模塊來聯網,至于mqtt協議基本上是要自己實現的。 也就是mqtt的報文需要自己去構建,好在mqtt的報文并不是很復雜,稍微研究一下也能理解。

2、Linux下使用官方sdk包,比如阿里云有提供阿里的sdk包,下載后調用它提供的接口來連接阿里云。

3、QT里移植mqtt:這種方式因為可以直接調用官方寫好的接口,因此使用起來就簡單多了,但是這個移植過程并不是那么簡單。 這分為Windows端和Linux端。 Windows端就不說了,我主要說一下Ubuntu下和arm開發板上的移植。

移植也分為兩種,一種是編譯成動態鏈接庫,一種是直接把mqtt官方源碼包含進去自己的工程里面,然后一起編譯。 我本人覺得要編譯成庫,然后配置環境變量什么的比較麻煩,還不如直接把源碼包含進去。

先說Ubuntu下的移植:

這個我是參考網上的,Linux Qt下MQTT模塊的導入(移植)

按照這篇博客來操作,實測有效,總結起來非常簡單,就是下載源碼,添加到自己的工程中,然后編譯,編譯出錯的都是因為頭文件包含的時候,應該把<>替換成"",這兩種頭文件包含的區別相信大家都很清楚。

這樣就移植好了。 可以看到,在這里使用gcc編譯可以通過,并且寫個簡單的測試代碼,確實能連接云端

圖片

接下來說一下移植到arm端:

這部分網上的資料是真的少,搜索半天都找不到你想要的。

我們知道,要移植到arm開發板上面,需要使用交叉編譯工具鏈,正常情況下,你寫好的qt程序在主機Ubuntu上能運行,只要換成交叉編譯工具編譯,就可以放到開發板上運行了。

但是這里你這樣做會發現報錯。

圖片

提示QSslConfiguration這種類型不認識(未定義)。于是我就去找一下這個在哪里有定義,找了一下,發現這種類型其實在qsslconfiguration.h這個文件中是有定義的,但是前面通過#ifndef QT_NO_SSL這個宏沒有把這段代碼編譯進去

圖片

于是真相大白了,在gcc里沒有那個宏定義,所以下面那段代碼會被編譯,所以自然就不會出現未定義這種錯誤。但是當使用交叉編譯工具鏈的時候,在qtnetwork-config.h這個文件中找到了這個宏定義,所以#ifndef QT_NO_SSL 到#endif之間的代碼都不會被編譯,自然QSslConfiguration就會未定義了。

圖片

于是我猜想,把qtnetwork-config.h中的這個QT_NO_SSL宏給注釋掉,應該就可以了,雖然 說這樣亂改代碼可能導致一些意想不到的結果,但我還是想試一下看能不能編譯通過。結果發現會出現一連串的連鎖反應,改了這個,又會出現新的錯誤,所以這種方法不行。而且像這種文件它默認是只讀的,也就是說它本來就不希望你去修改,所以不應該這樣做。

后面我又想,既然直接改變宏定義不行,能不能把報錯的地方直接注釋掉,反正那些函數可能并沒有用到,所以注釋掉應該不會有什么影響

圖片

這里是報錯的那個類的頭文件,再切換到源文件

圖片

發現都是沒有編譯的,但是仔細觀察源文件,其實也是有QT_NO_SSL這個宏的

這里就讓人覺得很奇怪了,同樣是有這個宏,其他的地方都不會被編譯,這里卻會被編譯,而且其他地方都可以跳轉到qtnetwork-config.h文件中去,這里卻不會。

圖片

那么,很容易猜到,在這個源文件里沒有包含qtnetwork-config.h這個頭文件,導致沒有定義那個宏。

解決辦法:在qmqtt_ssl_socket_p.h文件中添加一句代碼:

#include "qtnetwork-config.h"

圖片

問題成功解決。把編譯好的文件放在arm開發板上,可以成功執行

圖片

圖片

至此,移植結束,可以盡情開發了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11322

    瀏覽量

    209893
  • 移植
    +關注

    關注

    1

    文章

    379

    瀏覽量

    28153
  • Ubuntu
    +關注

    關注

    5

    文章

    563

    瀏覽量

    29888
  • 工業物聯網
    +關注

    關注

    25

    文章

    2380

    瀏覽量

    64501
  • MQTT
    +關注

    關注

    5

    文章

    652

    瀏覽量

    22573
收藏 人收藏

    評論

    相關推薦

    嵌入式linux部署qt的幾個疑問

    QT程序不能直接在嵌入式linux里跑(這里指ARM平臺);Windows做交叉編譯需要使用插件,有點多余,直接用linux虛擬機做交叉編譯;嵌入式
    發表于 10-27 09:47

    基于QT嵌入式linux圖形應用軟件設計

    嵌入式linux開發環境搭建、嵌入式linux開發模型、linux內核移植和文件系統、
    發表于 11-05 08:11

    嵌入式LinuxQT移植mqtt的步驟教程

    環境:Ubuntu18.04開發板:debian交叉編譯工具鏈:arm-linux-gnueabihf-gcc 8.3.0QtQt5.11.2解決方案在文末,如不想看中間過程,可直接跳轉到文末
    發表于 12-27 06:50

    嵌入式Linux系統的移植研究

    介紹嵌入式系統和嵌入式系統中的GUI , 詳細說明三種常見的嵌入式GUI (Microwindows、MiniGUI 和QT)的設計結構和使用上的優缺點, 描述Microwindows
    發表于 04-24 10:43 ?23次下載

    基于Qt嵌入式Linux通訊簿程序設計

      摘 要: 隨著嵌入式系統的發展,在Linux 使用Qt 開發嵌入式應用程序是嵌入式圖形用戶
    發表于 11-23 11:31 ?3613次閱讀

    嵌入式linux GUI-Qt解析

    職業培訓班》二期課程中嵌入式linux應用開發方面的重要內容。不少學員對QT方面的內容比較關注,所以在這里我們先對QT做一簡單介紹。
    發表于 11-01 16:53 ?1次下載

    基于嵌入式LinuxQt編程實現數碼相框的設計

    基于Linux使用Qt編寫的數碼相框架構設計方案通過使用純C++語言開發來支持嵌入式Linux系統,采用
    的頭像 發表于 03-05 08:05 ?3339次閱讀

    基于嵌入式Linux系統Mini GUI的移植方法與過程詳解

    的結構和特點,描述了將MiniGUI在ARM Linux移植方法與過程,并對這種基于MiniGUI的嵌入式系統開發做了展望。
    發表于 09-12 16:22 ?3696次閱讀

    嵌入式LINUXQt開發入門教程

    嵌入式LINUXQt開發入門教程(最好的嵌入式開發板)-該文檔為嵌入式LINUX
    發表于 08-04 11:01 ?30次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>LINUX</b>的<b class='flag-5'>Qt</b>開發入門教程

    嵌入式linux安裝qt

    QT程序不能直接在嵌入式linux里跑(這里指ARM平臺);Windows做交叉編譯需要使用插件,有點多余,直接用linux虛擬機做交叉編譯;嵌入式
    發表于 10-20 18:06 ?6次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>安裝<b class='flag-5'>qt</b>

    嵌入式LinuxQt

    嵌入式LinuxQt嵌入式LinuxQt配置特定設備嵌入
    發表于 11-01 17:06 ?3次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>Qt</b>

    嵌入式LinuxQT版本,嵌入式Linux版本Qt5.4快速部署

    (Toradex Apalis iMX6)基于Embedded Linux快速部署做較詳細說明。嵌入式Linux版本Qt5.4快速部署--- by Toradex 秦海
    發表于 11-01 17:20 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的<b class='flag-5'>QT</b>版本,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>版本<b class='flag-5'>Qt</b>5.4快速部署

    嵌入式linux幾種播放視頻方法

    嵌入式linux幾種播放視頻的方法:交叉編譯mplayer、smplayer等軟件,移植嵌入式平臺。這種
    發表于 11-01 17:38 ?9次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>幾種播放視頻<b class='flag-5'>方法</b>

    嵌入式linux安裝qt,嵌入式Linux版本Qt5.4快速部署

    (Toradex Apalis iMX6)基于Embedded Linux快速部署做較詳細說明。嵌入式Linux版本Qt5.4快速部署--- by Toradex 秦海
    發表于 11-02 10:51 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>安裝<b class='flag-5'>qt</b>,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>版本<b class='flag-5'>Qt</b>5.4快速部署

    嵌入式Linux路線

    嵌入式linux開發環境搭建、嵌入式linux開發模型、linux內核移植和文件系統、
    發表于 11-02 11:51 ?18次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>路線
    主站蜘蛛池模板: 簧片免费观看| 国产一区二区三区乱码在线观看| 国产日韩亚洲精品视频| 99国产精品综合AV无码| 红杏俱乐部| 亚洲精品123区| 果冻传媒MV免费播放在线观看| 蜜臀AV熟女人妻中文字幕| 性XXXXX搡XXXXX搡景甜| 国产乱码免费卡1卡二卡3卡四卡 | 538久久视频在线| 考好老师让你做一次H| 思思99热久久精品在线6| 动漫女主被扒开双腿羞辱| 古装性艳史电影在线看| 日韩性大片| 在线欧美 精品 第1页| 成人做视频免费| 全免费A敌肛交毛片免费懂色AV| 年轻夫妇韩剧中文版免费观看| 亚洲国产精品免费观看| 99国产精品免费视频| 拍戏被CAO翻了H| 中文字幕在线观看网址| 好嗨哟在线看片免费| 一区二区三区无码被窝影院| 伦理片天堂eeuss影院| 亚洲欧美偷拍视频一区| 久久久久琪琪精品色| 99热在线播放| 久久热r在线视频精品| 亚洲高清在线精品一区| 久久99热狠狠色一区二区| 午夜免费无码福利视频麻豆| 黑丝美女被人操| 91精品国产91热久久p| 九九久久国产精品大片| 纵欲(高H)| 手机毛片在线观看| 久久久久久久网站| 成人在无码AV在线观看一 |