OpenWRT移植MQTT,编译成动态链接库,处理器是MT7620a

参考的几个文章

  • linux安装MQTT:https://blog.csdn.net/weixin_37139197/article/details/78934961
  • MQTT源码讲解:https://blog.csdn.net/weixin_37139197/article/details/78966249
  • 交叉编译OpenSSL和MQTT:https://blog.csdn.net/qq_39436605/article/details/82017454

需要准备的软件

  • Ubuntu电脑:交叉编译使用,Ubuntu使用openwrt的编译链在Ubuntu上编译openwrt可运行的文件,复制到opwnwrt上运行
  • MQTT包:paho.mqtt.c库,编译成动态链接库给openwrt调用
  • openssl:MQTT依赖的加密协议

步骤

安装openssl

官网

下载最OpenSSL V1.1.0

下载压缩包即可,本人因为使用其他程序已经使用了openssl1.0.0,所以我下载了1.0.0的编译.

tar zxvf openssl-1.0.0t.tar.gz
cd openssl-1.0.0t/
./config no-asm shared --prefix=$PWD/install --cross-compile-prefix=/home/zsj/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-

 

./config参数解析

no-asm : Do not use assembler code

shared : 编译连接成动态库

--prefix=$PWD/install : 指定编译后安装路径

--cross-compile-prefix=/home/zsj/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-: 指定交叉编译工具链,我用了绝对路径

 

修改Makefile,找到Makefile中的所有-m64,或者-m32的地方,然后删除(应该只有两处地方),很重要。

    make
    make install

查看编译的结果

我的编译文件在,......../openssl-1.0.0t/文件夹内,没有到install中

此处已经OK,之后编译MQTT只要加入openssl路径即可

 

安装paho.mqtt.c

下载,可使用git,也可以去下载压缩包解压,我的git速度不行都用下载压缩包的方法.

git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c

修改Makefile。在129行添加openssl的链接目录,注意改成你自己的路径。

...
CFLAGS += -I./../openssl-1.0.0t/install/include
LDFLAGS += -L./../openssl-1.0.0t/install/lib
...

修改完成之后,执行如下命令:我都用绝对路径

make CC=/home/zsj/openwrt/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-uclibc-gcc

这样会在当前目录创建build目录,进入build目录,你能看到output目录和一个版本头文件,进入output,你能看到库文件,examples和测试程序。

(图片抄袭)

OpenWRT移植MQTT,编译成动态链接库,处理器是MT7620a_第1张图片

将Ubuntu动态库复制到MT7620产品中,放在/usr/lib下,如图,有mqtt的和ssl的.so

OpenWRT移植MQTT,编译成动态链接库,处理器是MT7620a_第2张图片

 

运行MQTT测试代码

完成上面的步骤只是将MT7620这个产品支持了MQTT库,并没有写应用程序测试

将Ubuntu下mqtt编译好的例子复制到MT7620产品中,放在/test文件夹下,如图

./MQTTClient_publish

 

 

这些只是主要步骤,细节有问题再交流.

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(openwrt,OpenWrt开发)