pahoMQTT.c arm平台交叉编译

此教程为pahoMQTT.c的交叉编译, 通过了aarch64和arm32(uclibc)平台验证, 适用于rv1106/rv1103/rk3228H等芯片. (2023.9月著)

 - 编译平台ubuntu20.04需要安装交叉编译器. cmake等软件.
 - pahoMQTT 需要依赖 openssl, 需要先交叉编译openssl.

安装编译环境(Ubuntu20.04)

编译环境安装

交叉编译器
sudo apt install gcc-aarch64-linux-gnu
如果是SDK自带工具链则设置环境变量即可. 
export RV1103_CROSS_PATH=/rv1103/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/bin
export PATH=$PATH:$ RV1103_CROSS_PATH
官方要求软件安装
sudo apt-get install build-essential gcc make cmake cmake-gui cmake-curses-gui
sudo apt-get install fakeroot devscripts dh-make lsb-release
sudo apt-get install libssl-dev
sudo apt-get install doxygen graphviz

下载软件源码

openssl  https://github.com/openssl/openssl

pahoMQTT.c https://github.com/eclipse/paho.mqtt.c

无法访问github的, 使用百度云下载

链接:https://pan.baidu.com/s/1BcqXHh82Q_b5c_KZBuVyMg?pwd=7r8t 
提取码:7r8t

交叉编译

为了方便编译, 新建编译文件夹, 放入下载的源码包, 然后解压.

mkdir pahoMqttProject
cd pahoMqtttProject
解压源码包
tar -xvf openssl-1.1.1v.tar.gz
unzip paho.mqtt.c-master.zip

解压后

pahoMQTT.c arm平台交叉编译_第1张图片

openssl交叉编译

进入openssl项目文件夹, 配置config
./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=aarch64-linux-gnu-

cross-compile-prefix=配置交叉编译器

pahoMQTT.c arm平台交叉编译_第2张图片

编译和安装
make
make install

遇到 error: unrecognized command-line option '-m64' 报错,  删除Makefile中-m64选项即可.原因可能是我们编译器不支持x86_64的环境(此处猜测,有知道的可告知).

pahoMQTT.c arm平台交叉编译_第3张图片

编译完成可以在install路径下查看

pahoMQTT.c arm平台交叉编译_第4张图片

pahoMQTT.c交叉编译

进入pahoMQTT.c项目文件夹, 配置cmake
mkdir mqttBuild
cd mqttBuild
cmake -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=pahoMqttProject/openssl-1.1.1v/install -DOPENSSL_LIBRARIES=pahoMqttProject/openssl-1.1.1v/install/lib -DCMAKE_INSTALL_PREFIX=pahoMqttProject/paho.mqtt.c-master/mqttInstall -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc  ..

这些选项需要根据自己的路径做调整

DOPENSSL_ROOT_DIR=指定openssl的安装路径, 是之前编译的openssl-1.1.1v/install目录

DOPENSSL_LIBRARIES=指定openssl的动态库路径, 是openssl-1.1.1v/install/lib目录(这个应该不是必须要, 不太确定所以加上了)

DCMAKE_C_COMPILER=指定交叉编译器

编译和安装
make
make install

pahoMQTT.c arm平台交叉编译_第5张图片

编译完成可以在mtqqInstall路径下查看

验证结果

file命令查看动态链接库的属性

MQTTVersion检查动态库

拷贝openssl和MQTT的lib文件到目标开发板/usr/lib下, mqtt的bin文件MQTTVersion到/usr/bin下

pahoMQTT.c arm平台交叉编译_第6张图片

你可能感兴趣的:(arm开发,物联网,linux,c语言)