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
执行完毕后就可以了