paho.mqtt.c开源代码的ARM移植

paho.mqtt.c开源代码的ARM移植

  • 1、环境及背景
  • 2、开源资源下载
  • 3、编译过程
    • 3.1编译OpenSSL
    • 3.2编译paho.mqtt.c

1、环境及背景

CSDN上关于paho.mqtt.c的交叉编译教程大部分都是有问题的,或者是胡乱复制的,所以自己在此仔细写此文章分享自己一步一步移植成功的经验,为大家节约时间。虚拟机VM,系统Ubuntu16.04 64位,交叉编译器为arm-openwrt-linux-gcc,交叉编译paho.mqtt.c-master,库包含OpenSSL和mqtt5的功能。

2、开源资源下载

paho.mqtt.c-master下载地址,下载最新的就行。
OpenSSL下载地址,此次使用的是openssl-1.1.1g.tar.gz。

3、编译过程

3.1编译OpenSSL

因为OpenSSL是paho.mqtt.c-master的一个基础库,所以必须先交叉编译OpenSSL。关于OpenSSL的交叉编译,有一些比较好的文章,贴出来供大家参考。openssl的编译与交叉编译
此处我就不在此赘述OpenSSL的交叉编译了,这块有问题可以留言给我,基本问题不大。

3.2编译paho.mqtt.c

我的OpenSSL交叉编译路径在/home目录下面,路径为/home/zkty/arm-openssl/
备注:zkty是我创建VM虚拟机时自动创建的,其实就是此用户的home根目录。
paho.mqtt.c开源代码的ARM移植_第1张图片
解压缩在github下载的paho.mqtt.c-master .zip
paho.mqtt.c开源代码的ARM移植_第2张图片进入cmake文件夹,可以看到toolchain.linux-arm11.cmake文件,这个文件打开设置交叉编译器参数(前提是你的Ubuntu交叉编译器已经设置好了)。

# path to compiler and utilities
# specify the cross compiler
SET(CMAKE_C_COMPILER arm-openwrt-linux-gcc)

# Name of the target platform
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)

# Version of the system
SET(CMAKE_SYSTEM_VERSION 1)

回到paho.mqtt.c-master路径下,打开命令窗口,切换root用户,执行一下命令:

root@ubuntu:/home/zkty/paho.mqtt.c-master# cmake -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_SAMPLES=TRUE -DPAHO_BUILD_DOCUMENTATION=TRUE -DOPENSSL_ROOT_DIR="/home/zkty/arm-openssl/" -DOPENSSL_LIB_SEARCH_PATH="/home/zkty/arm-openssl/lib/" -DOPENSSL_INC_SEARCH_PATH="/home/zkty/arm-openssl/include/openssl/" -DCMAKE_TOOLCHAIN_FILE=/home/zkty/paho.mqtt.c-master/cmake/toolchain.linux-arm11.cmake /home/zkty/paho.mqtt.c-master

特别注意上述三个参数:
-DOPENSSL_ROOT_DIR="/home/zkty/arm-openssl/"
-DOPENSSL_LIB_SEARCH_PATH="/home/zkty/arm-openssl/lib/"
-DOPENSSL_INC_SEARCH_PATH="/home/zkty/arm-openssl/include/openssl/"
这三个参数是设置OpenSSL的基础库文件的。
-DCMAKE_TOOLCHAIN_FILE=/home/zkty/paho.mqtt.c-master/cmake/toolchain.linux-arm11.cmake /home/zkty/paho.mqtt.c-master
这个参数是设置交叉工具链的。

执行

make -j4 package

最终产物自动生成了压缩包的形式,如图:
paho.mqtt.c开源代码的ARM移植_第3张图片
内部包含了头文件、可执行的例子、动态库文件等,可以自己探索。
编译过程参考github项目下面的具体介绍。

你可能感兴趣的:(mqtt)