MQTT_mosquitto 老版本移植受阻 | 学习笔记

简介: 快速学习 MQTT_mosquitto 老版本移植受阻

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:MQTT_mosquitto 老版本移植受阻】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11178


MQTT_mosquitto 老版本移植受阻

内容介绍:

一、PC 的移植

二、下载 openssl

三、执行 config 生成它的配置文件

四、有关 mosquitto 的配置

 

一、PC 的移植

这节课重点学习 mosquitto 的 MQTT 软件怎样进行移植,首先移植到 PC 环境, x86+ 口号,虽然大多数的力量系统可以直接通过安装 sudo clean 安装 store,有一些力量系统虽然是运行在 x86 上,但不是基于 ijy 的发行版,需要单独移植,尤其是 Charles 系统更加需要去移植,所以在 PC 端的移植,首先需要下载官方的源代码,有关下载的方法就是复制 http://mosquitto.orj/download/,

直接粘贴之后,它的首页就可以直接下载到最新版本。Mosquitto-1.6.9.tar.gz 就是最新版本,如果要下载历史版, Older downlods are available at https://mosquitto.org/files/ 就是历史版本。

这时就不去下载了因为已经下好,一般讲 C 端软件尽量不单纯把它下载来,如果是自己去下载的话,应该到哪些地方去下载,这样便于后期去下载一个更新的版本,那这里用的显然不是最新版本,用的是 1.5.4,最新版本已经到 1.6 级了。主要的原因,是因为之前对 1.5.4 做过一个适配,有可能因为版本的兼容性的问题导致编译不过,一个是 mosquitto 的版本,一个是 openssl-1.0.1e.tar 的版本,

image.png

暂时用不到 uuid,因为对于 pc 机 来说,如果说缺少 uuid 的话,可以直接通过命令去安装,可以不进行拷贝 ,xml 也可以不拷贝,这样把两个最重要的 mosquitto、openssl 拷贝过来放到文件夹里。下载之后,就要去解压这两个源代码,其实很多人在下载之后就去解压 mosquitto 的源代码去编译。编译musquitto: mkdir/home/user/mqtt/pc/mqtt_install   sudo apt-get install uuid-dev

解压并进入 mosquitto-1.5.4 目录    修改配置文件 config.mk:

 

二、下载 openssl

其实之所以下载 openssl 主要原因是因为 mosquitto 依赖于上面的库mkdir/home/user/mqtt/pc/openssl_install

解压并进入 openssl-1.0.1e 目录  

./config no -asm-shared--prefix=/home/user/mqtt/pc/openssl_install

make

make install

应该先把 mosquitto 依赖 openssl 安装上,首先解压 tar xvf openssl-1.0.le.tar.gz

解压出来之后,要指定安装目录,所以建议把安装目录给建好,

edu@edu:mqtt$ mkidr  openssl-1.0.1e-install

建好了之后,这个时候再进到 openssl 里面去。

image.png

 

三、执行 config 生成它的配置文件

进去之后第一步要执行 config,生成它的配置文件,首先,找到当前的路径,接下来就是执行 conf 观察一下步骤是否有问题没有问题之后,执行 config 传参,首先加一个 no-asm 参数,这个参数是支持汇编的,输入 no-asm-shared --prefix=/ home /edu/debug/mqtt/openssl-1.0.1e

image.png

安装路径是在 install 目录下。配置完成之后跟刚才相比差不多增加的内容看不太出来,不管看不看得出来,编一下就知道了,看编译是否能通过,编译完成后,库已经生成了,但是别看刚才很小的一个库,大概编了有四五分钟的时间,时间还是挺久的,这里面现在没有东西,现在需要执行 make-install, 虽然有一个语法错误,但是这个里面好像有东西的,但这个东西还不够。错误有提示显示这里有语法错误,下面还有一个错误。两种方法,先把 use/bin/pod2man+71 这些话注释掉。

image.png

如果还无法通过,就可以把 makefile 提示错误的地方加一个“-”号忽略错误,如果过了之后,还是建议把这个改回去,因为这些东西,它不是自己能用到,可能别人也要用到。

image.png

过了之后,接下来再去编另一个, mosquitto 先解压输入 mosquitto-1.5.4.tar.gz,创建一个安装目录 mkdir mosquitto-1.5.5-install 。

image.png

进来之后开始就比较多,建议把 uuid 先装一下,输入 sudo  apt-get install uuid-dev,uuid 产生一个唯一识别码。

image.png

 

四、有关 mosquitto 的配置

安装结束之后有关 mosquitto 的配置就会非常的多,配置会比较麻烦,首先打开 config.mk 这个文件,然后在前面加上 CC=gcc,CXX=g++,安装路径也要指定,输入 prefix=/home/edu/debug/mqtt/mosquitto-1.5.4-install ,然后插入一句-I/home/user/mqtt/pc/openssl_install/include

回到安装目录,搜索 ggdb,在 endif 的后面加上 CFLAGS:=- I,这个路径就是 openssl 的安装路径 /home/edu/debug/mqtt/openssl-1.0.1e_instal,把路径复制下来,用复制的方法是为了避免错误。因为手输入的话很有可能会输错,然后这个目录下面的 include,紧接着是去添加 BROKER-LIBS, 这个是添加在 PASSWD-LIBS 的后面。在 PASSWD-LIBS 语句的后面添加 BROKER-LIBS=-L/home/edu/debug/mqtt/openssl-1.0.1e-install-lib-lm-ldl-lssl-lcrypto,还是这个路径,用到的库都有 -lm、-ldl、-lssl、-lcrypto ,基本上就差不多,PASSWD-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto 。路径要用大写库名用小写,这个路径还是上面的路径。他其实是编不同的对象,上面和下面的两句话基本上差不多,可能少了前两个,那么把这个再复制一下,因为还有一个叫 LIB-LIBS,LIB-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto ,再看一下还有一些就是加在了前面但是内容是一样的。

image.png

在添加一个地方,输入 /WITH-THREAD,因为加的东西是一样的,所以把上面的内容复制BROKER-LIBS=-L/home/edu/debug/mqtt/openssl-1.0.1e-install-lib-lm-ldl-lssl-lcrypto   PASSWD-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto    LIB-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto,加在 BROKER-LIBS 的前面。还有一个地方就是要在右下角增加 -lrt ,在 CLIENT ,在 libmos 结束的地方加上 -lrt。

image.png

基本上就差不多了,然后要设置一个环境变量DESTDIR=/home/user/mqtt/pc/mqtt_install,这个环境变量是一个临时的用完了需要取消掉。这个临时环境变量其实就是安装目录。然后接下来就开始 make 。

image.png

这个过程比较漫长,编完之后有报错误,错误主要应该是 openssl 有问题,先暂时编到这里,下节课在排除错误的原因。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 Java Spring
RocketMQ-JAVA客户端不同版本接入方式
RocketMQ4.0 RocketMQ5.0 JAVA接入 spring springboot
RocketMQ-JAVA客户端不同版本接入方式
|
消息中间件 存储 Kubernetes
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
682 1
|
3月前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
3月前
|
消息中间件 SQL 监控
RocketMQ 5.3.0 版本中 Broker IP 配置为 IPv6 的情况
【8月更文第28天】RocketMQ 是一款分布式消息中间件,支持多种消息发布和订阅模式。在 RocketMQ 5.3.0 版本中,Broker 的配置文件 `broker.conf` 允许配置 IPv6 地址。当 Broker 的 `brokerIP1` 配置为 IPv6 地址时,会对 Broker 的启动、消息推送和状态监控等方面产生影响。本文将探讨如何在 RocketMQ 中配置 IPv6 地址,并检查 Broker 的状态。
208 0
|
5月前
|
消息中间件 RocketMQ
RocketMQ不同版本的下载
RocketMQ不同版本的下载
|
5月前
|
消息中间件
Rabbitmq与Erlang对应版本关系
Rabbitmq与Erlang对应版本关系
170 0
|
6月前
|
消息中间件 RocketMQ
在RocketMQ 5.1.0版本中,当Broker的`enableControllerMode`配置为true时
在RocketMQ 5.1.0版本中,当Broker的`enableControllerMode`配置为true时
223 1
|
6月前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
157 0
|
6月前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
385 0
|
6月前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
126 0
下一篇
无影云桌面