当前位置: 首页 > news >正文

Mqtt学习笔记--交叉编译移植(1)

简述

Mqtt目前在物联网行业的应用比较多,mqtt属于应用层的一个中间件,这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多,这里不细介绍。
其实在我们之前的产品中,自己也开发的有类似的中间件,除了具有订阅发布的功能,还有一对一通信,在Linux系统里实现不同进程间的通信,通信基于TCP、UDP、Unix域套接字。
这里要移植Mqtt主要是为了与其他厂家物联网产品(传感器、物联网网关、平台等)对接融合,这里把服务端和客户端都做移植。

准备工作

这里选用的mosquitto进行移植,mosquitto依赖openssl和uuid,下面是我选用的版本:

  1. mosquitto-2.0.10.tgz
  2. openssl-3.0.7.tgz
  3. libuuid-1.0.3.tar.gz

编译

  1. 编译libuuid
    解压编译
tar xvzf libuuid-1.0.3.tar.gz
./configure --prefix=/home/workplace/mqtt/uuid/build-hi3536c/install CC=arm-hisiv500-linux-gcc

结果
正常执行完成后,会生成Makefile,然后执行:

make
make install
  1. 编译lib
    解压编译:
tar xvzf openssl-3.0.7.tar.gz
CC=arm-hisiv500-linux-gcc ./config no-asm no-async shared --prefix=/home/workplace/hi3536c/openssl/install

正常执行完成后,会生成Makefile,然后执行:

make
make install
  1. mosquitto编译
    解压编译:
tar xvzf   mosquitto-2.0.10.tar.gz#我是把以上编译的uuid和openssl的库文件拷贝到了交叉编译器的lib里,所以下面编译mosquito时,就没有再加路径
#
make WITH_SRV=no CC=arm-none-linux-gcc CXX=arm-none-linux-g++ LDFLAGS="-lssl -lcrypto -luuid -lm -lpthread -ldl"

正常执行完成后,会生成Makefile,然后执行:

make
make install

编译问题

可能不同的编译器会有不同的问题,我这里用的海思的编译器,有一下错误:

  1. 对‘pthread_setname_np’未定义的引用在这里插入图片描述
    代码如下:
    在这里插入图片描述
    这个函数在当前编译器的库中不存在,这个可以直接注释掉,再次编译就没问题了。

测试

Windows下安装的mosquito,直接启动,用mosquito_sub订阅,mosquito_pub发布,看看能不能收到。

启动订阅:
topic为hello

mosquitto_sub -h 192.168.1.36 -p 1883 -t "hello"

发布消息:

mosquitto_pub -h 192.168.1.36 -p 1883 -t "hello" "test pub msg"

订阅这边接收到的消息:

mosquitto_sub -h 127.0.0.1 -p 1883 -t "hello"
test pub msg
test pub msg
test pub msg

相关文章:

Mqtt学习笔记--交叉编译移植(1)

简述 Mqtt目前在物联网行业的应用比较多,mqtt属于应用层的一个中间件,这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多,这里不细介绍。 其实在我们之前的产品中,自己也开发的有类似的中间件,除了具…...

Gateway的服务网关

Gateway服务网关 Gateway网关是我们服务的守门神&#xff0c;所有微服务的统一入口。 网关的核心功能特性&#xff1a; 请求路由 权限控制 限流 架构如下&#xff1a; gateway使用 引入依赖 创建gateway服务&#xff0c;引入依赖 <!--网关--> <dependency>…...

信息化发展18

存储技术 1 、存储分类 2 、常用存储模式的技术与应用对比&#xff1a; ( 1 &#xff09; 存储虚拟化&#xff08; Storage Virtualization &#xff09; 是“ 云存储” 的核心技术之一。 它带给人们直接的好处是提高了存储利用率&#xff0c; 降低了存储成本&#xff0c; 简…...

TypeScript学习 + 贪吃蛇项目

TypeSCript简介 TypeScript是JavaScript的超集。它对JS进行了扩展&#xff0c;向JS中引入了类型的概念&#xff0c;并添加了许多新的特性。TS代码需要通过编译器编译为JS&#xff0c;然后再交由JS解析器执行。TS完全兼容JS&#xff0c;换言之&#xff0c;任何的JS代码都可以直…...

YOLO-NAS详细教程-介绍如何进行物体检测

对象检测是计算机视觉中的一项核心任务,可以检测和分类图像中的边界框。自从深度学习首次取得突破以来,它就以极快的速度获得普及和普及,并推动了医疗领域、监控、智能购物等众多公司的发展。考虑到它最终满足了两个基本需求,这一点也就不足为奇了端到端方式:找到所有当前…...

容器没有命令时,如何查看进程、容器executable file not found in $PATH: unknown

前言 当容器没有ps -ef命令时&#xff0c;可以通过以下的命令来查看容器的进程。 docker container top查看容器运行的进程&#xff08;该命令很有用&#xff09; #docker container top 命令用于查看容器运行的进程 #当容器里面没有ps -ef命令时&#xff0c;使用docker con…...

如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台

这是 SafeGraph 技术主管经理 Nan Zhu 与亚马逊云科技高级解决方案架构师 Dave Thibault 共同撰写的特约文章。 SafeGraph 是一家地理空间数据公司&#xff0c;管理着全球超过 4100 万个兴趣点&#xff08;POI&#xff0c;Point of Interest&#xff09;&#xff0c;提供品牌隶…...

国产IDE如何获得捐赠和风险投资

有人在开发VB6 脚本工具&#xff0c;有人在开发VB6的插件&#xff0c;把VB6变成VSCODE界面模式&#xff0c;再加上NUGET&#xff0c;NPM等包管理器原理的在线组件、源码下载功能。 还有TWINBASIC几乎80%代替了VB6&#xff0c;radbasic一直封闭&#xff0c;听说也收到了不少众筹…...

【数学建模】清风数模正课5 相关性分析

相关系数 相关性分析的关键是计算相关系数&#xff0c;在本节课中将会介绍两种常用的相关系数&#xff1a;皮尔逊相关系数&#xff08;Pearson&#xff09;和斯皮尔曼相关系数&#xff08;Spearman&#xff09;。 它们可以用来衡量两个变量间相关性的大小&#xff0c;对于不同…...

Java设计模式:一、六大设计原则-03:里氏替换原则

文章目录 一、定义&#xff1a;里氏替换原则1.1 里氏替换原则1.2 里氏替换原则的作用 二、模拟场景&#xff1a;里氏替换原则三、违背方案&#xff1a;里氏替换原则3.1 工程结构3.2 储蓄卡和信用卡3.2.1 储蓄卡3.2.2 信用卡 3.3 单元测试3.3.1 储蓄卡测试3.3.2 信用卡测试 四、…...

jmeter 固定定时器

固定定时器&#xff08;Constant Timer&#xff09;是一个定时器元件&#xff0c;可以在线程组中的每个线程之间添加固定的延迟时间。固定定时器会对每个线程的执行进行一定的暂停。 聊一下和线程组中的调度器对线程组执行时长的影响&#xff1a; 相同&#xff1a; 都会影响线…...

【微服务部署】07-调用链追踪

文章目录 集成SkyWalking实现调用链追踪1. SkyWalking架构图2. 代码集成SkyWalking 集成SkyWalking实现调用链追踪 1. SkyWalking架构图 Receiver是SkyWalking的入口&#xff0c;支持gRPC和HTTP协议。 SkyWalking内部有分析和查询两个部分 存储方面SkyWalking支持Elasticsearc…...

【C++入门】命名空间、缺省参数、函数重载、引用、内联函数

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a; C入门学习必备语法 &#x1f43c;本文作者&#xff1a; 阿四啊 &#x1f438;发布时间&#xff1a;2023.9.3 前言 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加…...

c++ 学习之 构造函数的使用规则

上规则 // 默认情况下&#xff0c;c 编译器至少给一个类添加三个函数 //1.默认构造函数&#xff08;无参&#xff0c;函数体为空&#xff09; //2.默认析构函数 &#xff08;无参 &#xff0c;函数体为空&#xff09; //3.默认拷贝函数&#xff0c;对其属性进行值拷贝 //构…...

C++操作符重载的注意事项

关于C操作符重载&#xff0c;可以用类内的成员运算符重载或友元函数。但是注意两个不能同时出现&#xff0c;不然编译出错。 #include<iostream> using namespace std; class Complex{public:Complex(int r0,int i0){real r;imag i;}//#if 0Complex operator(Complex …...

10 | Spark 查找每个单词的最大行号

假设你有一个包含文本行号和文本内容的RDD,现在你想找出每个单词出现在哪些行,并计算它们出现的最大行号。 需求是从包含文本行号和文本内容的RDD中找出每个单词出现在哪些行,并计算它们出现的最大行号。 具体需求如下: 数据输入: 代码从一个包含文本行号和文本内容的RD…...

CRE66365

CRE66365是一款高度集成的电流模式PWM控制IC&#xff0c;为高性能、低待机功耗和低成本的隔离型反激转换器。在正常负载条件下&#xff0c;AC输入高电压下工作在QR模式。为了最大限度地减少开关损耗&#xff0c;QR 模式下的最大开关频率被内部限制为 77kHz。当负载较低时&#…...

React hook 10种常见 Hook

React Hook是什么&#xff1f; React官网是这么介绍的&#xff1a; Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 完全可选的 你无需重写任何已有代码就可以在一些组件中尝试 Hook。但是如果你不想&#xff0c;你不…...

图文详解PhPStudy安装教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 官方下载 请在PhPStudy官方网站下载安装文件&#xff0c;官方链接如下&#xff1a;https://m.xp.cn/linux.html&#xff1b;图示如下&#xff1a; 请下载PhPStudy安装文件…...

stable diffusion实践操作-hypernetworks

系列文章目录 本文专门开一节写hypernetworks的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、h…...

Midjourney对比度黄金公式:Contrast = f(–sref, –style, –iw) × 0.942(基于12,846张生成图回归验证)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney对比度控制的底层逻辑与黄金公式的提出 Midjourney 的图像生成并非直接操控像素级参数&#xff0c;而是通过扩散模型对潜空间&#xff08;latent space&#xff09;中语义强度与视觉张力的联合建模实…...

UnityXFramework:面向商业手游的可扩展热更新框架设计

1. 这不是又一个“Hello World”框架&#xff1a;为什么UnityXFramework从第一天就拒绝“玩具感”我第一次在公司内部技术分享会上演示UnityXFramework原型时&#xff0c;台下有位做了八年客户端的老同事直接问&#xff1a;“你这框架和AssetStore上那些卖99块的‘通用框架’比…...

随机计算与ViT硬件加速:混合架构如何突破AI芯片能效墙

1. 项目概述&#xff1a;当ViT遇见随机计算最近在硬件加速领域&#xff0c;一个名为“ASCEND”的项目引起了我的注意。这本质上是一个专门为Vision Transformer&#xff08;ViT&#xff09;模型设计的硬件加速器&#xff0c;但其核心创新点在于采用了“随机计算”这种非常规的电…...

Spark Transformer:稀疏激活技术提升大模型计算效率

1. Spark Transformer架构概述在当今大规模语言模型的时代&#xff0c;计算效率已成为制约模型实际应用的关键瓶颈。传统Transformer架构中&#xff0c;前馈网络(FFN)和注意力机制占据了绝大部分计算开销&#xff0c;特别是在处理长上下文时&#xff0c;这种计算负担呈指数级增…...

别再花钱买网盘了!手把手教你在Windows服务器上免费搭建个人版Filebrowser(附端口映射与防火墙配置)

零成本打造私有云盘&#xff1a;Windows服务器部署Filebrowser全指南你是否厌倦了付费网盘的限速和隐私风险&#xff1f;一台闲置的Windows服务器就能变身功能完备的私有云存储系统。本文将带你从零开始&#xff0c;用开源的Filebrowser构建完全自主控制的文件管理平台&#xf…...

基于SpringBoot的运动会报名与成绩录入系统毕业设计

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot与Vue框架的运动会报名与成绩录入系统以解决传统体育赛事管理中存在的信息处理效率低下数据准确性不足以及资源分配不科学等问…...

保姆级教程:用Arbe或大陆4D毫米波雷达点云数据,手把手实现Freespace检测(附Python伪代码)

毫米波雷达点云实战&#xff1a;从数据到可行驶区域的完整工程指南在自动驾驶感知系统中&#xff0c;可行驶区域检测&#xff08;Freespace&#xff09;直接决定了车辆路径规划的可行空间边界。相比激光雷达和摄像头方案&#xff0c;4D毫米波雷达凭借全天候工作能力、成本优势和…...

ML模型监控工具:监控和维护机器学习模型的性能

ML模型监控工具&#xff1a;监控和维护机器学习模型的性能 一、ML模型监控工具概述 1.1 ML模型监控工具的定义 ML模型监控工具是指用于监控和维护机器学习模型性能的软件工具。它通过收集模型的预测数据、性能指标和数据质量&#xff0c;帮助用户了解模型的状态&#xff0c;及时…...

顶伯在线语音工具

⌨️ 顶伯在线语音工具快捷键大全顶伯文字转语音工具内置了丰富的快捷键&#xff0c;让您无需鼠标即可高效操控微软 TTS 引擎。下面为您汇总全部快捷键&#xff0c;建议收藏。⭐⚡ 一、核心操作快捷键▶️ 播放 / 暂停&#xff1a;Ctrl Enter开始或暂停当前文本的语音合成⏹️…...

非结构化数据处理有没有更高效的办法?2026智能体端到端方案彻底终结数据孤岛

在2026年的数字化深水区&#xff0c;企业面对的不再是单纯的数据库增删改查&#xff0c;而是由海量PDF合同、非标图片、多模态音视频、复杂的系统日志以及社交媒体碎片信息构成的“非结构化数据冰山”。 据行业数据显示&#xff0c;企业内部超过80%的数据以非结构化形式存在。过…...