开发者学堂课程【嵌入式之 RFID 开发与应用2020版:MQTT_mosquitto 老版本移植受阻】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/665/detail/11178
MQTT_mosquitto 老版本移植受阻
内容介绍:
一、PC 的移植
二、下载 openssl
三、执行 config 生成它的配置文件
四、有关 mosquitto 的配置
一、PC 的移植
这节课重点学习 mosquitto 的 MQTT 软件怎样进行移植,首先移植到 PC 环境, x86+ 口号,虽然大多数的力量系统可以直接通过安装 sudo clean 安装 store,有一些力量系统虽然是运行在 x86 上,但不是基于 ijy 的发行版,需要单独移植,尤其是 Charles 系统更加需要去移植,所以在 PC 端的移植,首先需要下载官方的源代码,有关下载的方法就是复制 http://mosquitto.orj/download/,
直接粘贴之后,它的首页就可以直接下载到最新版本。Mosquitto-1.6.9.tar.gz 就是最新版本,如果要下载历史版, Older downlods are available at https://mosquitto.org/files/ 就是历史版本。
这时就不去下载了因为已经下好,一般讲 C 端软件尽量不单纯把它下载来,如果是自己去下载的话,应该到哪些地方去下载,这样便于后期去下载一个更新的版本,那这里用的显然不是最新版本,用的是 1.5.4,最新版本已经到 1.6 级了。主要的原因,是因为之前对 1.5.4 做过一个适配,有可能因为版本的兼容性的问题导致编译不过,一个是 mosquitto 的版本,一个是 openssl-1.0.1e.tar 的版本,
暂时用不到 uuid,因为对于 pc 机 来说,如果说缺少 uuid 的话,可以直接通过命令去安装,可以不进行拷贝 ,xml 也可以不拷贝,这样把两个最重要的 mosquitto、openssl 拷贝过来放到文件夹里。下载之后,就要去解压这两个源代码,其实很多人在下载之后就去解压 mosquitto 的源代码去编译。编译musquitto: mkdir/home/user/mqtt/pc/mqtt_install sudo apt-get install uuid-dev
解压并进入 mosquitto-1.5.4 目录 修改配置文件 config.mk:
二、下载 openssl
其实之所以下载 openssl 主要原因是因为 mosquitto 依赖于上面的库mkdir/home/user/mqtt/pc/openssl_install
解压并进入 openssl-1.0.1e 目录
./config no -asm-shared--prefix=/home/user/mqtt/pc/openssl_install
make
make install
应该先把 mosquitto 依赖 openssl 安装上,首先解压 tar xvf openssl-1.0.le.tar.gz
,
解压出来之后,要指定安装目录,所以建议把安装目录给建好,
edu@edu:mqtt$ mkidr openssl-1.0.1e-install
,
建好了之后,这个时候再进到 openssl 里面去。
三、执行 config 生成它的配置文件
进去之后第一步要执行 config,生成它的配置文件,首先,找到当前的路径,接下来就是执行 conf 观察一下步骤是否有问题没有问题之后,执行 config 传参,首先加一个 no-asm 参数,这个参数是支持汇编的,输入 no-asm-shared --prefix=/ home /edu/debug/mqtt/openssl-1.0.1e
。
安装路径是在 install 目录下。配置完成之后跟刚才相比差不多增加的内容看不太出来,不管看不看得出来,编一下就知道了,看编译是否能通过,编译完成后,库已经生成了,但是别看刚才很小的一个库,大概编了有四五分钟的时间,时间还是挺久的,这里面现在没有东西,现在需要执行 make-install, 虽然有一个语法错误,但是这个里面好像有东西的,但这个东西还不够。错误有提示显示这里有语法错误,下面还有一个错误。两种方法,先把 use/bin/pod2man+71 这些话注释掉。
如果还无法通过,就可以把 makefile 提示错误的地方加一个“-”号忽略错误,如果过了之后,还是建议把这个改回去,因为这些东西,它不是自己能用到,可能别人也要用到。
过了之后,接下来再去编另一个, mosquitto 先解压输入 mosquitto-1.5.4.tar.gz,创建一个安装目录 mkdir mosquitto-1.5.5-install 。
进来之后开始就比较多,建议把 uuid 先装一下,输入 sudo apt-get install uuid-dev,uuid 产生一个唯一识别码。
四、有关 mosquitto 的配置
安装结束之后有关 mosquitto 的配置就会非常的多,配置会比较麻烦,首先打开 config.mk 这个文件,然后在前面加上 CC=gcc,CXX=g++,安装路径也要指定,输入 prefix=/home/edu/debug/mqtt/mosquitto-1.5.4-install
,然后插入一句-I/home/user/mqtt/pc/openssl_install/include
。
回到安装目录,搜索 ggdb,在 endif 的后面加上 CFLAGS:=- I,这个路径就是 openssl 的安装路径 /home/edu/debug/mqtt/openssl-1.0.1e_instal,把路径复制下来,用复制的方法是为了避免错误。因为手输入的话很有可能会输错,然后这个目录下面的 include,紧接着是去添加 BROKER-LIBS, 这个是添加在 PASSWD-LIBS 的后面。在 PASSWD-LIBS 语句的后面添加 BROKER-LIBS=-L/home/edu/debug/mqtt/openssl-1.0.1e-install-lib-lm-ldl-lssl-lcrypto
,还是这个路径,用到的库都有 -lm、-ldl、-lssl、-lcrypto ,基本上就差不多,PASSWD-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto
。路径要用大写库名用小写,这个路径还是上面的路径。他其实是编不同的对象,上面和下面的两句话基本上差不多,可能少了前两个,那么把这个再复制一下,因为还有一个叫 LIB-LIBS,LIB-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto
,再看一下还有一些就是加在了前面但是内容是一样的。
在添加一个地方,输入 /WITH-THREAD,因为加的东西是一样的,所以把上面的内容复制BROKER-LIBS=-L/home/edu/debug/mqtt/openssl-1.0.1e-install-lib-lm-ldl-lssl-lcrypto PASSWD-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto LIB-LIBS=L/home/edu/debug/mqtt/openssl-1.0.1e-install/lib--lssl-lcrypto
,加在 BROKER-LIBS 的前面。还有一个地方就是要在右下角增加 -lrt ,在 CLIENT ,在 libmos 结束的地方加上 -lrt。
基本上就差不多了,然后要设置一个环境变量DESTDIR=/home/user/mqtt/pc/mqtt_install,这个环境变量是一个临时的用完了需要取消掉。这个临时环境变量其实就是安装目录。然后接下来就开始 make 。
这个过程比较漫长,编完之后有报错误,错误主要应该是 openssl 有问题,先暂时编到这里,下节课在排除错误的原因。