需要源码:
1. cJSON-1.7.15.tar.gz
2. mosquitto-2.0.9.tar.gz
一、Mosquitto 移植到ARM
目标ARM设备 :飞凌IMX6Q ARM-LINUX-GCC:版本 5.3.0
通信不需要加密
交叉编译工具搭建
飞凌嵌入式交叉编译工具:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
#飞凌嵌入式 交叉编译工具安装位置 /opt/fsl-imx-x11/4.1.15-2.1.0
创建一个脚本使能交叉编译工具,可以不用默认的脚本environment-setup-cortexa9hf-neon-poky-linux-gnueabi
#export PATH=$PATH:/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi
#export SDKTARGETSYSROOT=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi
#export CC="arm-poky-linux-gnueabi-gcc -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
#export CXX="arm-poky-linux-gnueabi-g++ -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
#export CPP="arm-poky-linux-gnueabi-g++ -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
export AS="arm-poky-linux-gnueabi-as "
export LD="arm-poky-linux-gnueabi-ld --sysroot=$SDKTARGETSYSROOT"
export GDB=arm-poky-linux-gnueabi-gdb
export STRIP=arm-poky-linux-gnueabi-strip
export RANLIB=arm-poky-linux-gnueabi-ranlib
export OBJCOPY=arm-poky-linux-gnueabi-objcopy
export OBJDUMP=arm-poky-linux-gnueabi-objdump
export AR=arm-poky-linux-gnueabi-ar
export NM=arm-poky-linux-gnueabi-nm
export M4=m4
export TARGET_PREFIX=arm-poky-linux-gnueabi-
1. 移植 cJSON-1.7.15.tar.gz
更改Makefile
22 行 屏蔽CC
# CC = gcc -std=c89
69 行 去掉tests
.PHONY: all shared static clean install
all: shared static
#tar xvfz cJSON-1.7.15.tar.gz
#cd cJSON-1.7.15
#make
#make PREFIX=$PWD/../install install
2. 移植mosquitto-2.0.9.tar.gz
#make WITH_SRVSRV=no WITH_TLS=no CFLAGS="-I/home/jdtf/Mqtt/install/include -I/home/jdtf/Mqtt/install/include/cjson" LDFLAGS="-L/home/jdtf/Mqtt/install/lib -lrt -lcjson"
#make WITH_SRVSRV=no WITH_TLS=no DESTDIR=$PWD/../install CFLAGS="-I/home/jdtf/Mqtt/install/include -I/home/jdtf/Mqtt/install/include/cjson" LDFLAGS="-L/home/jdtf/Mqtt/install/lib -luuid -lrt -lcjson" install
3. 将install 目录下的所有文件拷贝至目标设备的文件系统
二、ubuntu Mosquitto 服务器搭建
1. 编译cJSON-1.7.15.tar.gz
#make && make install
2. 编译 mosquitto-2.0.9.tar.gz
#make && make install
3. 服务器设置默认mosquitto.conf
cp -arf /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf
并修改mosquitto.conf
#215 行
# listener port-number [ip address/host name/unix socket path]
listener 1883
#512 行
# 允许匿名用户
#allow_anonymous true
4. 运行服务器
mosquitto -v -c /etc/mosquitto/mosquitto.conf
5. 测试
测试程序可以参考
MQTT通信协议(mosquitto)发布订阅例子C语言实现_Kunaly-CSDN博客_mosquitto
MQTT通信协议(mosquitto)在Linux上的环境构建与测试_Kunaly-CSDN博客