1、 安装交叉编译工具(树莓派)
我这里移植的平台是树莓派,交叉编译工具的安装请点击这里,其他arm平台的请自行百度安装相应平台的交叉编译工具,这里不做讲解
2、准备好三个源码包
- openssl
下载地址: https://github.com/openssl/openssl - libuuid
下载地址:https://sourceforge.net/projects/libuuid/ - mosquitto
下载地址:https://mosquitto.org/
将三个安装包放在 mqtt_for_raspberry 目录下
3、编译安装openssl
-
进入 openssl-1.1.1a 目录
-
配置安装位置 (安装前先建立一个openssl-1.1.1a_install文件夹)
./config no-asm -shared --prefix=/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install
-
修改Makefile 对于这个版本的openssl修改这两个地方就行
PLATFORM=arm
CROSS_COMPILE=arm-linux-gnueabihf-
-
make
解决办法 去掉Makefile 里面的 -m64
-
makeinstall
出现以下文件及安装成功
.
4、编译安装libuuid(生成唯一识别码)
- mkdir libuuid-1.0.3_install 在mqtt_for_raspberry下创建该文件夹
- 配置安装路径及编译工具
./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc --prefix=/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/libuuid-1.0.3_install
export DESTDIR=
取消环境变量- make
- make install
生成以下文件即编译安装成功
5、 编译安装mosquitto
mkdir mosquitto-1.6.9_install
vi config.mk
修改配置文件
CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++
CFLAGS:=-I/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/include -I/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/libuuid-1.0.3_install/include
LDFLAGS=-L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lm -ldl -lssl -lcrypto -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/libuuid-1.0.3_instal/lib -luuid -lrt
LIB_LIBS:=
PASSWD_LIBS:=
BROKER_LIBS = -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lm -ldl -lssl -lcrypto -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/libuuid-1.0.3_instal/lib -luuid
PASSWD_LIBS = -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lssl -lcrypto
LIB_LIBS = /home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lssl -lcrypto
BROKER_LIBS = -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lm -ldl -lssl -lcrypto -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/libuuid-1.0.3_instal/lib -luuid
PASSWD_LIBS = -L/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lssl -lcrypto`
LIB_LIBS = /home/guyao/desktop/mqtt_study/mqtt_for_raspberry/openssl-1.1.1a_install/lib -lssl -lcrypto
3. 配置环境变量
export DESTDIR=/home/guyao/desktop/mqtt_study/mqtt_for_raspberry/mosquitto-1.6.9_install
4. make
5. make install
6、将编译生成的uuid、openssl、mosquitto库移植
Ubuntu挂载文件夹
1、ubuntu 安装NFS(默认是没有安装的)同时会有两个软件包nfs-common和portmap被安装上
sudo apt-get install nfs-kernel-server
2、修改NFS配置文件
vi /etc/exports
/home/guyao/desktop/mqtt_study/ 192.168.0.*(rw,sync,no_root_squash)
前面的路径为挂载的文件夹路径
ip192.168.0.*
— 允许访问的网段,
也可以是ip地址、主机名(能够被服务器解析)、
*(所有人都能访问)
(rw,sync,no_root_squash,no_subtree_check)
rw
:读/写权限
sync
:数据同步写入内存和硬盘
no_root_squash
:服务器允许远程系统以root特权存取该目录
no_subtree_check
:关闭子树检查
其他选项可以通过man exports查阅man文档
3、启动服务
sudo service portmap restart
重启portmapper(端口映射)服务sudo service nfs-kernel-server restart
重启NFS服务showmount -e
查看服务是否启动
表明已成功挂载一个目录
树莓派使用nfs服务
1、安装nsf服务
sudo apt-get install nfs-common
2、创建要挂载的目录
sudo mkdir /mnt/nfs_shared_client
3、挂载创建的目录 连接Ubuntu
mount -t nfs -o nolock 192.168.0.111:/home/guyao/desktop/mqtt_study /mnt/nfs_shared_client
4、然后就能成功访问Ubuntu所挂载的文件夹的文件啦
搬运三大库
mosquitto的搬运
1、首先在 /usr 目录下建立 mqtt 文件夹
cp xxx/mqtt_install /usr/mqtt -arf
但是我们尽量要节省我们开发板的内存 只搬运有用的文件
注意:一定要加 -arf 因为存在链接文件,如果没有 -a 将会将软链接文件拷贝成实体文件 将失去原有的效果
openssl的搬运
1、建立ssl文件夹 sudo mkdir ssl
2、开始搬运
uuid的搬运
在 /usr 建立uuid文件夹
sudo cp /mnt/nfs_shared_client/mqtt_for_raspberry/libuuid-1.0.3_install/lib . -arf
*注
:可以删除拷过来的头文件和静态库以节省空间
7、移植成功后配置开发板环境变量
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
2、source /etc/profile
使其配置生效