MQTT源码编译和Ubuntu下连接阿里云

环境说明

阿里云部署mqtt代理

  • SecureCRT远程登陆阿里云
    在这里插入图片描述
    2、使用储存库安装 EMQ X

    • 安装所需要的依赖包
      sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
      在这里插入图片描述

    • 添加 EMQ X 的官方 GPG 密钥
      curl -fsSL https://repos.emqx.io/gpg.pub | sudo apt-key add - 在这里插入图片描述

    • 使用以下命令设置 stable 存储库
      sudo add-apt-repository “deb [arch=amd64] https://repos.emqx.io/emqx-ce/deb/debian/ $(lsb_release -cs) stable”
      这里不会打印任何信息在这里插入图片描述

    • 更新 apt 包索引
      sudo apt update
      在这里插入图片描述

    • 安装最新版本的 EMQ X
      sudo apt install emqx
      这里稍微等待,需要下载19M.在这里插入图片描述

    • 查询可用版本
      sudo apt-cache madison emqx
      在这里插入图片描述

    • 使用第二列中的版本字符串安装特定版本,例如 4.0.0
      sudo apt install emqx=4.0.0

      这里稍微等待,出现选项选y在这里插入图片描述

    • 启动 EMQ X
      emqx start
      在这里插入图片描述

    • 查看状态
      emqx_ctl status
      在这里插入图片描述
      至此mqtt代理服务器就搭建完成了。

动态库和静态库

  • 动态库
    linux下动态库文件以 lib*.so结尾。

    动态库在程序编译时并不会被连接到目标代码中,而是在程序运行用到相应的函数时才会被被载入,因此编译出来的可执行文件比较小,在程序运行时还需要动态库存在,动态库的改变不会影响程序,后期程序的升级比较方便。多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只需要将动态库加载到内存一次。

    由于动态库使得可执行文件小,Linux下编译的默认动作是动态库。

  • 静态库
    静态库文件以 lib*.a结尾,多个*.o文件打包生成静态库文件。

    静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要该静态库。编译之后程序文件大,但加载快,隔离性也好,如果静态库改变,整个程序将重新编译。

mqtt源码动态库编译

  • 在git下下载paho C库
    git clone https://github.com/eclipse/paho.mqtt.c.git

  • 进入到mqtt根目录下,make编译动态库

    make之后出现错误 在这里插入图片描述
    解决方法

    下载libssl-doc
    在这里插入图片描述
    但是会出现以下错误
    在这里插入图片描述
    所以我找遍了百度终于找到以下解决方案
    在这里插入图片描述
    在这里插入图片描述
    运行sudo aptitude install libssl-dev的时候会出现三个反问,注意第一个选n,不接受这个包,降级处理,第二个和第三个选y。

    最后就会再mqtt源码根目录下的build/output下生成动态库
    在这里插入图片描述

  • 在mqtt源码根目录下运行make intsall安装库到ubuntu

    此时就可以在/usr/local/lib下看到库了
    在这里插入图片描述

测试连接阿里云

  • 将/paho.mqtt.c/src/samples目录下的MQTTAsync_subscribe.c和MQTTAsync_publish.c拷贝到test目录下

在这里插入图片描述

  • vim修改MQTTAsync_publish.c

    地址改成阿里云的公网ip
    消息随便改
    在这里插入图片描述

  • vim修改MQTTAsync_subscribe.c

  • gcc编译,注:一定要添加链接库
    在这里插入图片描述
    在这里插入图片描述
    生成可执行文件,分别用两个终端运行在这里插入图片描述

  • 首先看一下阿里云1883端口连接了多少个客户端
    netstat -nat | grep -iw “1883” | wc -l
    在这里插入图片描述
    目前只有一个

  • 运行ubuntu中的两个客户端
    publish
    在这里插入图片描述
    订阅端
    在这里插入图片描述

  • 此时阿里云mqtt服务器连接了2个客户端,按理说应该连接3个,但是发布端发布完消息后立即断开了,所以只有两个。
    在这里插入图片描述

到这里阿里云mqtt服务器已经搭建成功,源码编译mqtt客户端完成,并且成功做了测试。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值