ARM平台交叉编译|MQTT-mosquitto

本文详细介绍了如何在Ubuntu16.04环境下,使用aarch64交叉编译器为ARM Cortex-A55平台编译mosquitto。首先,编译依赖的OpenSSL和cJSON,然后配置编译选项,指定编译器路径和库路径,执行make命令进行编译。最后,将编译好的动态库和工具复制到目标系统,并进行测试,验证mosquitto的订阅功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

mosquitto编译方式分为两种:cmake和make。windows、Mac平台使用cmake编译方式,其他平台,包括linux平台,直接使用make进行编译。windows7下编译mosquitto详细介绍了windows7环境下编译mosquitto的步骤。

本文所介绍的内容是关使用于某种ARM平台下的mosquitto的编译步骤。

编译环境

  • 宿主机:Ubuntu 16.04
  • Host: ARM,Cortex-A55
  • 交叉编译器:aarch64-linux-gnu-gcc, 7.2.1 20171011 (Linaro GCC 7.2-2017.11)

编译步骤

mosquitto官方下载最新的mosquitto源码包,本次编译的宿主机是Ubuntu系统,直接使用mosquitto提供的makefile进行编译。编译环境依赖如下:

  • cJSON:为了客户端可以输出cJSON格式的内容,默认打开,通过make WITH_CJSON=no,关闭依赖;
  • openssl:为mosquitto提供ssl支持,默认打开,通过make WITH_TLS=no,关闭依赖;
  • pthreads:为mosquitto提供多线程支持,由于编译环境为linux系统,所以默认支持pthreads API环境。

准备

OpenSSL

openssl的交叉编译步骤可以参考,交叉编译OpenSSL

cJSON

  1. 下载最新的cJSON源码,解压源码。
  2. mkdir build
  3. cmake -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++
  4. make
  5. make install

编译

解压mosquitto源码包,执行如下命令编译:

make CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ CFLAGS="-I /path/to/openssl/install/include -I /path/to/cJson/install/include" LDFLAGS="-L /path/to/openssl/install/lib64 -L /path/to/cJson/install/lib -lssl -lcrypto -lcjson"

  • CC和CXX用于指定,目标平台的gcc和g++编译器;
  • CFLAGS:用于指定,openssl和cjson头文件安装目录;
  • LDFLAGS:用于指定,openssl和cjson动态库安装目录;

编译完成之后,执行make install进行安装。

测试

  1. 将cJSON、openssl、mosquitto动态库拷贝到目标系统;
  2. 设置LD_LIBRARY_PATH指定上述三类动态库在目标系统上的安装位置;
  3. 将mosquitto_ctrl mosquitto_passwd mosquitto_pub mosquitto_rr mosquitto_sub测试工具拷贝到目标系统;
  4. 这里以mosquitto_sub为例,测试一下mosquitto订阅功能,示例如下:
mosquitto_sub -h host_addr -p port -u username -P passwd -t the_topic_sub
  • -h:指定mqtt broker的服务器地址;
  • -p:指定mqtt broker的服务器端口号;
  • -u:指定mqtt broker的服务器登录用户名;
  • -P:指定mqtt broker的服务器登录密码;
  • -t: 指定本地订阅的主题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值