paho.mqtt.c的Linux编译与交叉编译

目录

一、下载源码

二、普通编译安装

三、交叉编译安装

四、安装成功示例

五、参考资料

六、paho.mqtt.c 使用注意事项


一、下载源码

git:Releases · eclipse/paho.mqtt.c · GitHub

下载稳定的C语言的发布版本

二、普通编译安装

注意:本人所述都是基于:CentOS Linux release 7.4 的操作,其它发行版本不保证一样!

解压源码后,进入解压后的主目录,如:cd paho.mqtt.c-1.3.0,按如下步骤执行命令:

  1. mkdir openssl_search_path_x86    创建openssl依赖路径
  2. cd openssl_search_path_x86    进入到刚刚新建的路径
  3. cp -r -d /home/workspace/openssl-1.0.2o_install_new/x86 ./  把已安装过的openssl库文件和头文件拷贝到新建的路径
  4. cd ../  回到主目录
  5. mkdir x86_build 创建cmake的build使用路径
  6. cd x86_build
  7. cmake -DPAHO_WITH_SSL=TRUE -DOPENSSL_SEARCH_PATH=/home/workspace/tools_3rdparty/paho.mqtt.c-1.3.0/openssl_search_path_x86 -DCMAKE_INSTALL_PREFIX=/home/workspace/tools_3rdparty/paho.mqtt.c-1.3.0/x86_install -DPAHO_BUILD_STATIC=TRUE ..  执行cmake,-DCMAKE_INSTALL_PREFIX 是指定paho最终的安装路径用的,-DPAHO_BUILD_STATIC表示需要生成静态库。
  8. make -j10 编译
  9. make install 安装
  • 说明:因为我安装的paho需要用到openssl这个库,当然,如果没必要,可以选择不使用openssl,即:前4步可以省略,第7步cmake的时候不使用对应的编译选项-DPAHO_WITH_SSL和-DOPENSSL_SEARCH_PATH即可,-DOPENSSL_SEARCH_PATH的作用是指定openssl的安装路径,是在openssl没有安装在默认路径下时使用的。
  • openssl的安装参考我另一篇文章:openssl的Linux编译与交叉编译
  • debug版本的编译,需要在第7步中,加上一个编译选项:-DCMAKE_BUILD_TYPE=Debug

三、交叉编译安装

与普通编译步骤一样,只是需要指定一下交叉编译器

  1. mkdir openssl_search_path_x3399    创建openssl依赖路径
  2. cd openssl_search_path_x3399   进入到刚刚新建的路径
  3. cp -r -d /home/workspace/openssl-1.0.2o_install_new/x3399 ./  把已安装过的openssl库文件和头文件拷贝到新建的路径
  4. cd ../  回到主目录
  5. mkdir x3399_build 创建cmake的build使用路径
  6. cd x3399_build
  7. cmake -DPAHO_WITH_SSL=TRUE -DOPENSSL_SEARCH_PATH=/home/workspace/tools_3rdparty/paho.mqtt.c-1.3.0/openssl_search_path_x3399 -DCMAKE_INSTALL_PREFIX=/home/workspace/tools_3rdparty/paho.mqtt.c-1.3.0/x3399_install -DPAHO_BUILD_STATIC=TRUE -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc .. 
    -DCMAKE_C_COMPILER表示指定自己的交叉编译器,自己提前安装配置好自己需要的交叉编译器。
  8. make -j10   编译
  9. make install  安装

四、安装成功示例

从图中可以看出,指定安装路径下的lib64下生成了动态库和对应的静态库文件,include下生成了头文件。

五、参考资料

paho.mqtt.c库交叉编译_fangye945a的博客-CSDN博客_paho.mqtt交叉编译


六、paho.mqtt.c 使用注意事项

  • 注意:paho.mqtt.c-1.3.6 版本,openssl依赖的环境变量已经做了修改:OPENSSL_SEARCH_PATH 不再支持,可以使用 OPENSSL_ROOT_DIR 替代,或者用 OPENSSL_INC_SEARCH_PATH 指定头文件路径,用 OPENSSL_LIB_SEARCH_PATH 指定库文件路径
  • paho.mqtt.c-1.3.0 版本,当时发现 MQTTClient_retry 函数有个bug,如果把系统时间往前改(如改成昨天),会导致不发送心跳,从而断开连接,若你自己实现了断连重连机制,则会重复出现断开、连接、断开、连接的问题,自己可以临时修改源码,如下标红处,当然现在最新版已经修复了这个bug,原理是:使用"单调时间",即系统时间修改,不会影响两个时间差的结果,具体实现请参考最新版源码!

官方bug单: Mqtt disconnect after setting the system time · Issue #824 · eclipse/paho.mqtt.c · GitHub

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值