当前位置: 首页 > 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
http://www.lryc.cn/news/151482.html

相关文章:

  • Gateway的服务网关
  • 信息化发展18
  • TypeScript学习 + 贪吃蛇项目
  • YOLO-NAS详细教程-介绍如何进行物体检测
  • 容器没有命令时,如何查看进程、容器executable file not found in $PATH: unknown
  • 如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台
  • 国产IDE如何获得捐赠和风险投资
  • 【数学建模】清风数模正课5 相关性分析
  • Java设计模式:一、六大设计原则-03:里氏替换原则
  • jmeter 固定定时器
  • 【微服务部署】07-调用链追踪
  • 【C++入门】命名空间、缺省参数、函数重载、引用、内联函数
  • c++ 学习之 构造函数的使用规则
  • C++操作符重载的注意事项
  • 10 | Spark 查找每个单词的最大行号
  • CRE66365
  • React hook 10种常见 Hook
  • 图文详解PhPStudy安装教程
  • stable diffusion实践操作-hypernetworks
  • Win10搭建VisualSvn Server
  • Golang网络编程
  • 详解vue3中ref和reactive用法和区别
  • QML与C++的交互操作
  • Java_理解方法调用
  • Mysql 性能分析(慢日志、profiling、explain)、读写分离(主从架构)、分库分表(垂直分库、垂直分表、水平分表)
  • 获取Linux内核源码
  • 【Maven教程】(四)坐标与依赖:坐标概念,依赖配置、范围、传递性和最佳实践 ~
  • Java“牵手”京东店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,京东店铺所有商品API申请指南
  • TuyaOS开发学习笔记(1)——NB-IoT开发搭建环境、编译烧写(MT2625)
  • Css 将div设置透明度,并向上移50px,盖住上面的元素一部分