paho.mqtt链接openssl库实现ssl加密连接

1 openssl

下载地址:https://codeload.github.com/openssl/openssl/tar.gz/refs/tags/OpenSSL_1_1_1g
这里我采用的openssl-3.0.14,实测没有任何问题,上面连接的版本较低,我也实测过没有任何问题,但是本人还是建议在高本版没有问题的情况下,还是使用新版本为好
编译步骤:

tar zxf openssl-OpenSSL_1_1_1g.tar.gz

进入目录,并配置输出目录和交叉编译器, (我是直接在我的虚拟机上编译的,所以直接选择gcc,个别文章加了这个选项就不用去掉 -m64,我这里行不通)

cd openssl-OpenSSL_1_1_1g/
./config no-asm shared no-async --prefix=`pwd`/ssl_result  --cross-compile-prefix=gcc(`pwd`/ssl_result是生成路径,也可以不设置,一般不设置默认是在/usr/local路径下,编译之后可以去路径下看是否生成对应的ssl相关的include跟lib)
执行下面命令,删除Makefile文件的 -m64(如果确认自己的系统是32位的,可以不用操作,正常顺手操作即可)
sed -i 's/-m64//' Makefile

编译、安装

make && make install

成功编译后,在/usr/local/lib64(这个目录是我指定生成的),可以看到里面生成的库
在这里插入图片描述
头文件拷贝到这里了:如下图
在这里插入图片描述
至此ssl库编译结束

**2.paho.mqtt.c 库的下载、交叉编译
**
本文下载的是paho.mqtt.c-1.3.13.tar.gz,下载地址:https://github.com/eclipse/paho.mqtt.c/archive/refs/tags/v1.3.13.tar.gz
编译 paho.mqtt.c 库之前,需要先编译其依赖库:openssl。
1、解压缩,创建要安装目录paho.mqtt.c_result

在这里插入代码片

tar xvf paho.mqtt.c-1.3.13.tar.gz
mkdir paho.mqtt.c_result/bin -p
mkdir paho.mqtt.c_result/include -p
mkdir paho.mqtt.c_result/lib -p
mkdir paho.mqtt.c_result/share/man/man1 -p
2、进入目录,交叉编译

cd paho.mqtt.c-1.3.13/
make  CC=gcc:="-I `pwd`/../ssl_result/include" LDFLAGS:="-L `pwd`/../ssl_result/lib"

CFLAGS:=“-I pwd/…/ssl_result/include”:指定前面编译的 openssl 的头文件;
LDFLAGS:=“-L pwd/…/ssl_result/lib”:指定前面编译的 openssl 的库文件路径;

3、make install,安装编译结果

make install prefix=`pwd`/../paho.mqtt.c_result 

prefix=pwd/…/paho.mqtt.c_result :指定安装目录路径;

4 paho.mqtt.c库写一个MQTT客户端
源码里paho.mqtt.c-master/src/samples路径下都是提供的demo。我们先采用较为简单的paho.mqtt.c-master/src/samples/MQTTClient_subscribe.c编译验证
注意:

gcc src/samples/MQTTClient_subscribe.c -I -lpaho-mqtt3cs  -lpaho-mqtt3c -o MQTTClient_subscribe

编译过程中-lpaho-mqtt3cs要加上,要不然就会报一大推有关SSL相关开头的函数找不到,还有一个我这里编译的时候没有加对应的库的路径,是因为我编译这个demo之前全部给软连接到/usr/lib下了,编译器会默认从/usr/lib路径下寻找

注意:
我在验证的时候发现OPENSSL这个宏没有编译到,但是我看makefile里的这个参数是添加的,没有搞明白,当前我解决的方式是在源码中有关对这个引用的地方全部手动打开

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值