Linux/ARM下QT MQTT库的编译安装

news2024/12/28 3:30:17
  • 💂 个人主页:风间琉璃
  • 🤟 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)订阅专栏

 

目录

一、 Linux 环境下编译安装

二、 ARM Linux 环境下安装


一、 Linux 环境下编译安装

Linux 版本: UBuntu 18.04 LTS
QT 版本: 5.12.9
MQTT 版本: 5.12.9

1.下载 MQTT
打开 https://github.com/qt/qtmqtt 选择与 QT 对应的 MQTT 版本(使用的是 5.12.9),下载源码压缩包,如图 1 所示

2.将解压缩后的文件拷贝到 UBuntu 工程目录内

3.在刚解压的目录内新建一个 bulid 文件夹,进入该文件夹,mkdir build && cd build

4.拷贝头文件

将源码解压目录下 src/mqtt 内所有的头文件,复制到 QT 安装目录下gcc_64/include/QtMqtt 内

 

5.编译并安装 MQTT

5.1指定 QT 安装目录

QT_INSTALL_DIR=/home/..../Qt5.12.9/5.12.9(Qt的安装目录)

5.2指定 qmake 目录
QT_QMAKE_DIR=$QT_INSTALL_DIR/gcc_64/bin/

5.3编译工程

$QT_QMAKE_DIR/qmake -r .. (注意有两个点)
make
sudo make install

 

 6.进入 QT 安装目录下 gcc_64/include/QtMqtt

新建文件 QMqttClient,打开文件添加#include "qmqttclient.h"
新建文件 QMqttSubscription,打开文件添加#include “qmqttsubscription.h”
新建文件 QMqttMessage,打开文件添加#include "qmqttmessage.h"
新建文件 QMqttTopicName,打开文件添加#include " qmqtttopicname.h"

7.运行示例程序
运行 QT,打开源码下的 examples 工程,运行该工程。


 

二、 ARM Linux 环境下安装

GCC 版本: 4.9.3
交叉编译工具: gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf
Qmake 版本: 3.1
QT 版本: 5.12.9

在 ARM Linux 下对 MQTT 进行编译,首先需要有交叉编译工具(交叉编译工具最好和所使用的 Linux 内核编译版本、 QT arm 的编译版本一致)

1.解压缩交叉编译工具到相应目录下


2.使用 tar 命令进行解压


3.修改/etc/profile 文件,添加交叉编译工具路径


4.使用 source /etc/profile 使刚才的改动生效


5.使用 arm-linux-gnueabihf-gcc -v 查看是否生效。(若是已经有交叉编译环境可以直接跳过前5步)


6.对 QT 源码进行编译(QT 库裁剪),得到对应的库文件等(若原来已经有Qt的交叉编译库,可以不用操作Qt的交叉编译)


7.在解压的目录内新建一个目录 build-arm 并进入该目录


8.QT_QMAKE_AND_DIR=/opt/Qt5/compiled/Qt5.12.9_arm/bin

此目录是 qmake 所在的目录,我把 Qt 源码编译后的文件放在/opt/Qt5/compiled/Qt5.12.9_arm 内

9.将 mqtt 解压缩后的头文件,放入到 Qt 交叉编译目录的 include 文件夹内和上面第 6 条添操作一样,QtMqtt添加如下内容:

新建文件 QMqttClient,打开文件添加#include "qmqttclient.h"
新建文件 QMqttSubscription,打开文件添加#include “qmqttsubscription.h”
新建文件 QMqttMessage,打开文件添加#include "qmqttmessage.h"
新建文件 QMqttTopicName,打开文件添加#include " qmqtttopicname.h"

10.和上面一样编译、安装mqtt

$QT_QMAKE_AND_DIR/qmake -r ..
make
sudo make install

11.将编译后的库文件拷贝到 Arm linux 目标板中对应的 Qt 库文件夹内
libQt5Mqtt.la
libQt5Mqtt.prl

libQt5Mqtt.so
libQt5Mqtt.so.5
libQt5Mqtt.so.5.12
libQt5Mqtt.so.5.12.9

12.运行 Qt,打开源文件夹下的 examples 工程,使用 arm 编译该工程,将生成的文件拷贝到 Arm linux 板中运行。
 

安装步骤参考:
http://www.diy.ind.in/linux/31-install-mqtt-module-in-qt

结束语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~

不知道评论啥的,即使扣个666也是对博主的鼓舞吖 💞 感谢 💐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

破解分布式光伏运维难题,光伏+屋面数字化监控融合是关键

2022年5月,在东南地区某城市一幢写字楼上,技术人员们正不辞辛苦爬上数十米高的墙面,对写字楼的屋面和墙面进行勘察。随后,他们准备赶在台风季来临之前完成该写字楼的建筑光伏一体化项目安装与部署。 这是森特士兴集团股份有限公司…

fixed:error:0308010C:digital envelope routines::unsupported

目录1.故障现场2. 问题分析3. 修复方案4. 参考文献1.故障现场 最近由于一些原因,从Mac OSX 迁移到 Windows 平台,在尝试运行基于vue-element-admin 项目时,发生了如下异常: error:0308010C:digital envelope routines::unsuppor…

MySQL的一些指令,函数以及关键字

这个里面我准备记录一些比较有意思的MySQL的指令和函数,当然使用函数的时候我们要注意,会不会因为函数导致不走索引,走全表扫描的情况。 因为对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树…

导读:21 世纪中叶的精准肿瘤学奇点?循环肿瘤细胞和单细胞测序?

Tips: 组学时代的循环肿瘤细胞:我们离实现“奇点”还有多远?(Br J Cancer,IF:9.075),原文链接: https://pubmed.ncbi.nlm.nih.gov/35273384/ 循环肿瘤细胞的生物学、脆弱性和临床应用&#xff0…

用javascript分类刷leetcode22.字典树(图文视频讲解)

目录 Trie树,即字典树,又称前缀树,是一种树形结构,典型应用是用于统计和排序大量的字符串(但不限于字符串),所以经常被搜索引擎用于文本词频统计。它的优先是,最大限度的减少无谓的…

数据挖掘与机器学习作业_06 决策树

决策树 步骤 1.计算不纯度2.选取不纯度最高的特征进行分支3.计算不纯度4.继续划分 from sklearn import tree from sklearn.model_selection import GridSearchCV from sklearn.model_selection import cross_val_score from sklearn.model_selection import train_test_spl…

单点登录 SSO 解决方案选型指南|身份云研究院

单点登录(SSO)是目前企业降本增效以及提升用户体验的主流选择方案。常规的单点登录指“登录一次,即可访问所有互相信任的应用,用户不再需要记住每一个应用的账号密码”,这有效解决了密码疲劳、登录效率等问题&#xff…

(深度学习快速入门)第三章第二节:通过一个二分类任务介绍完整的深度学习项目

文章目录一:数据集介绍二:一个完整的深度学习项目必备文件三:项目代码(1)config.py——超参数文件(2)preprocess——数据预处理文件(3)dataloader——数据集封装&#xf…

后端人眼中的Vue(一)

一、简介 1.1、Vue简介 ​ Vue是渐进式 JavaScript 框架,啥叫渐进式?渐进式意味着你可以将Vue作为你应用的一部分嵌入其中,或者如果你希望将更多的业务逻辑使用Vue实现,那么Vue的核心库以及其生态系统。比如CoreVue-routerVuexax…

Homekit智能家居DIY之智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

RabbitMQ、Kafka、RocketMQ消息中间件对比总结

文章目录前言侧重点架构模型消息通讯其他对比总结参考文档前言 不论Kafka还是RabbitMQ和RocketMQ,作为消息中间件,其作用为应用解耦、异步通讯、流量削峰填谷等。 拿我之前参加的一个电商项目来说,订单消息通过MQ从订单系统到支付系统、库存…

ORB-SLAM2 --- KeyFrame::UpdateConnections 函数

目录 一、函数作用 二、函数流程 三、code 四、函数解析 一、函数作用 更新关键帧之间的连接图。 更新变量 mConnectedKeyFrameWeights:当前关键帧的共视信息,记录当前关键帧共视关键帧的信息(哪一帧和当前关键帧有共视,共视…

用C++实现十大经典排序算法

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 简介 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大…

喜报|知道创宇连续两年获评北京市企业创新信用领跑企业!

近日,2022年度北京市企业创新信用领跑名单正式发布。知道创宇凭借过硬的技术实力、创新能力及良好的企业信用记录成功入选2022年度北京市企业创新信用领跑企业。值得一提的是,这是知道创宇继2021年以来,连续两年获得此项殊荣。连续两年蝉联双…

CPU是如何执行程序的?

CPU是如何执行程序的?1、硬件结构介绍1.1、CPU1.2、内存1.3、总线1.4、输入/输出设备2、程序执行的基本过程3、a11执行的详细过程现代计算机的基本结构为五个部分:CPU、内存、总线、输入/输出设备。或许你了解了这些概念,但是你知道a11在计算…

【Kubernetes | Pod 系列】Pod 的镜像下载策略和 Pod 的生命周期 Ⅰ—— 理论

目录4. 镜像下载策略5. Pod 的生命周期5.1 Pod 生命期与特性说明5.2 Pod Phase 阶段说明备注5.3 容器状态说明(1)Waiting (等待)(2)Running(运行中)(3)Termin…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的nlp预训练模型

目录给我推荐20个比较流行的nlp预训练模型给我推荐20个比较流行的nlp预训练模型源码给我推荐20个比较流行的nlp预训练模型 BERT (谷歌) GPT-2 (OpenAI) RoBERTa (Facebook) ALBERT (谷歌) ELECTRA (谷歌) XLNet (谷歌/纽约大学) T5 (OpenAI) Transformer-XL (谷歌/香港中文大学…

Qt音视频开发09-ffmpeg内核音视频同步

一、前言 用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的视频文件比如收到的数据包…

【EdgeBox_tx1_tx2_E100】 PyTorch v1.8.0 torchvision v0.9.0 环境部署

简介:介绍PyTorch 环境 在 EHub_tx1_tx2_E100载板,TX1核心模块环境(Ubuntu18.04)下如何实现部署和测试,准备安装的环境是(PyTorch v1.8.0 torchvision v0.9.0)。 关于测试硬件EHub_tx1_tx2_E1…

文献学习04_Deep contextualized word representations 深度语境化的单词表示_20230102

论文信息 Subjects: Computation and Language (cs.CL) (1)题目:Deep contextualized word representations (深度语境化的单词表示) (2)文章下载地址: https://doi.org/10.48550/…