1. 交叉编译openssl
- openssl官网(https://www.openssl.org/source/)下载源码,解压并修改其Makefile,在文件首加入(将arm-linux改为自己的交叉编译链)
CC = arm-linux-gcc
AR = arm-linux-ar
RANLIB = arm-linux-ranlib
INSTALLTOP = /home/MQTT/openssl
OPENSSLDIR = /home/MQTT/openssl,
(2)执行make,make install。在/home/MQTT/openssl目录生成头文件和库文件。
2. 交叉编译paho-mqtt
(1)下载paho-mqtt源码(https://github.com/eclipse/paho.mqtt.embedded-c),解压并修改其Makefile,在文件首加入
CC = arm-linux-gcc
CFLAGS += -I/home/MQTT/openssl/include
LDFLAGS += -L/home/MQTT/openssl/lib
(2)执行make,在build/output/samples下生成qos0pub和pub0sub1,并在build/output下生成 libpaho-embed-mqtt3c.so.1,libpaho-embed-mqtt3c.so 库文件
(3)在build/output/samples下,执行arm-linux-readelf –a qos0pub查看移植qos0pub运行所需库文件。由此命令可知需要libc.so.6和libpaho-embed-mqtt3c.so.1。
(4)执行file libpaho-embed-mqtt3c.so.1,可知该库文件动态链接到libpaho-embed-mqtt3c.so.1.0,因此移植时需同时将libpaho-embed-mqtt3c.so.1.0复制到/lib目录下。
(5)将编译生成的两个可执行文件qos0pub和pub0sub1上传到设备(二进制上传),将程序所需的库文件libc.so.6,libpaho-embed-mqtt3c.so.1和libpaho-embed-mqtt3c.so.1.0上传到设备/lib目录下。
(6)在可执行文件的目录下执行chmod –R 777 qos0pub修改该文件权限,执行./ qos0pub.
Paho-mqtt移植成功。