移植mosquitto到imx6ull的arm平台

652 阅读2分钟

版本号介绍

  • 板子型号:imx6ull
  • 系统环境:ubuntu 18.04
  • linux-arm:Linux-4.9.88
  • libuuid:libuuid-1.0.3
  • openssl:openssl-1.1.1a
  • mosquitto:mosquitto-1.6.9

准备好三个源码包

编译安装libuuid-1.0.3

  1. 进入mosquitto/uuid目录
  2. 解压文件:tar zxf libuuid-1.0.3.tar.gz
  3. 进入libuuid-1.0.3目录
  4. 配置安装位置
./configure --prefix=/home/book/mosquitto/uuid/libuuid-1.0.3/install --host=arm-linux CC=arm-buildroot-linux-gnueabihf-gcc
  1. make
  2. make install
  3. 生成以下文件即编译成功 image.png

编译安装openssl-1.1.1a

  1. 进入mosquitto/openssl目录
  2. 解压文件:tar zxf openssl-1.1.1a.tar.gz
  3. 进入openssl-1.1.1a目录
  4. 配置安装位置
./config no-asm -shared --prefix=`pwd`/install

如果输出: image.png 换下面这条命令执行

./Configure --prefix=`pwd`/output shared no-asm linux-armv4

输出结果如下,即成功 image.png 5. 修改Makefile 对于这个版本的openssl修改

PLATFORM=linux-armv4
CROSS_COMPILE=arm-linux-gnueabihf-
  1. make image.png
  2. make install image.png 出现以下文件即安装成功 image.png

编译安装mosquitto

  1. 进入mosquitto/mosquitto目录
  2. 解压文件:tar zxf mosquitto-1.6.9.tar.gz
  3. 进入mosquitto-1.6.9目录
  4. vi config.mk 修改配置文件
CFLAGS:=-I/home/book/mosquitto/openssl/openssl-1.1.1a/install/include -I/home/book/mosquitto/uuid/libuuid-1.0.3/install/include
LDFLAGS=-L/home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lm -ldl -lssl -lcrypto -L/home/book/mosquitto/uuid/libuuid-1.0.3/install/lib -luuid -lrt

image.png

LIB_LIBS:=
PASSWD_LIBS:=
BROKER_LIBS = -L/home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lm -ldl -lssl -lcrypto -L/home/book/mosquitto/uuid/libuuid-1.0.3/install/lib -luuid 
PASSWD_LIBS = -L/home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lssl -lcrypto
LIB_LIBS = /home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lssl -lcrypto

image.png

BROKER_LIBS = -L/home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lm -ldl -lssl -lcrypto -L/home/book/mosquitto/uuid/libuuid-1.0.3/install/lib -luuid 
PASSWD_LIBS = -L/home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lssl -lcrypto`
LIB_LIBS = /home/book/mosquitto/openssl/openssl-1.1.1a/install/lib -lssl -lcrypto

image.png 5. 配置环境变量

export DESTDIR=/home/book/mosquitto/openssl/openssl-1.1.1a/install
  1. make image.png
  2. make install image.png

将编译生成的uuid、openssl、mosquitto库移植

  1. 使用nfs挂载文件(参考链接)juejin.cn/post/734313…
  2. mosquitto的搬运
首先在 /usr 目录下建立 mqtt 文件夹
cp /mnt/mosquitto/mosquitto-1.6.9/install/usr/local/bin /usr/mqtt/ -arf
cp /mnt/mosquitto/mosquitto-1.6.9/install/usr/local/include /usr/mqtt/ -arf
cp /mnt/mosquitto/mosquitto-1.6.9/install/usr/local/lib /usr/mqtt/ -arf
cp /mnt/mosquitto/mosquitto-1.6.9/install/usr/local/sbin /usr/mqtt/ -arf
cp /mnt/mosquitto/mosquitto-1.6.9/install/usr/local/share /usr/mqtt/ -arf

注意:一定要加 -arf 因为存在链接文件,如果没有 -a 将会将软链接文件拷贝成实体文件 将失去原有的效果 3. openssl的搬运

建立ssl文件夹sudo mkdir ssl
cp /mnt/openssl/openssl-1.1.1a/install/bin /usr/ssl/ -arf
cp /mnt/openssl/openssl-1.1.1a/install/lib /usr/ssl/ -arf
cp /mnt/openssl/openssl-1.1.1a/install/ssl /usr/ssl/ -arf
  1. ibuuid的搬运
在 /usr 建立uuid文件夹
sudo cp /mnt/uuid/uuid/libuuid-1.0.3/install/lib /usr/uuid/ -arf

移植成功后配置开发板环境变量

1. vi /etc/profile

添加一下内容
#mqtt start
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/ssl/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/uuid/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/mqtt/lib
export PATH=$PATH:/usr/ssl/bin
export PATH=$PATH:/usr/mqtt/bin
export PATH=$PATH:/usr/mqtt/sbin
#mqtt end 
  1. source /etc/profile 使其配置生效

测试

mosquitto_pub -h ip地址 -t temp -m "hello"
mosquitto_sub -h ip地址 -t temp