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根目录。

解压缩在github下载的paho.mqtt.c-master .zip

进入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

执行完毕后就可以了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐