怎么把mosquitto移植到arm上

本文小编为大家详细介绍“怎么把mosquitto移植到arm上”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么把mosquitto移植到arm上”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

创新互联建站2013年开创至今,先为晋城等服务建站,晋城等地企业,进行企业商务咨询服务。为晋城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1. 交叉编译uuid库

    我们把uuid的源码拷贝到Ubuntu,作者是拷贝拷贝到了/home/topeet/mqtt下面,如下图所示:

怎么把mosquitto移植到arm上

输入以下命令,解压源码并进入解压生成的文件夹:

tar -vxf libuuid-1.0.3.tar.gz

如下图所示:

怎么把mosquitto移植到arm上

然后我们在/opt/下创建一个名为mosquitto-arm的文件夹,命令如下:

mkdir -p /opt/mosquitto-arm

如下图所示:

怎么把mosquitto移植到arm上

配置源码,我们在解压生成的uuid库的文件夹输入以下命令:

./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux

如下图所示:

怎么把mosquitto移植到arm上

最后,编译并安装,命令如下:

make

make install

编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个libuuid的文件夹

怎么把mosquitto移植到arm上

2. 交叉编译openssl库

解压压缩包进进入解压后的目录

tar -vxf openssl-1.0.2g.tar.gz

cd openssl-1.0.2g

如下图所示。作者是放在了/home/topeet/mqtt目录下

怎么把mosquitto移植到arm上

配置编译参数

setarch i386 ./config no-asm shared --prefix=/opt/mosquitto-arm/openssl/

setarch i386:声明生成的是32位CPU,如果是64位CPU则去除该部分

 --prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)。

shared :生成动态连接库。

no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的

如果Makefile中有 -m32和-m64 就删掉 -m32和-m64,但是我的Makefile中没有,就没管这个。

如下图所示:

怎么把mosquitto移植到arm上

修改openss文件夹下的Makefile里面的编译器参数如下

CC= arm-none-linux-gnueabi-gcc

AR= arm-none-linux-gnueabi-ar $(ARFLAGS) r

RANLIB= arm-none-linux-gnueabi-ranlib

NM= arm-none-linux-gnueabi-nm

如下图所示:

怎么把mosquitto移植到arm上

编译并安装

make

make install

编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个openssl的文件夹

怎么把mosquitto移植到arm上

编译源码

make WITH_SRV=no CC=arm-none-linux-gnueabi-gcc  CXX=arm-none-linux-gnueabi-g++  CFLAGS="-I /opt/mosquitto-arm/openssl/include -I /opt/mosquitto-arm/libuuid-1.0.3/include -I /opt/mosquitto-arm/openssl/lib -I /opt/mosquit/to-arm/libuuid-1.0.3/lib" LDFLAGS="-L /opt/mosquitto-arm/openssl/lib -L /opt/mosquitto-arm/libuuid-1.0.3/lib -lssl -lcrypto -luuid"

注意,如果大家这里安装uuid和openssl的库的时候路径和我的不一致,要把-I和-L指定的库和头文件的路径修改成自己对应安装uuid和openssl库的路径,否则编译不过去。

如下图所示:

怎么把mosquitto移植到arm上

编译成功如下图所示:

怎么把mosquitto移植到arm上

安装,命令如下

make DESTDIR=/opt/mosquitto-arm/mosquitto-1.5 install

编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个mosquitto-1.5的文件夹

至此,我们mosquitto就已经交叉编译完成了

4.把mosquitto移植到开发板

在Ubuntu的/home/topeet/下创建一个mqtt-arm的文件夹,如下图所示:

怎么把mosquitto移植到arm上

我们进入我们安装的mosquitto-1.5目录下,作者这里是安装在了/opt/mosquitto-arm下,如下图所示:

怎么把mosquitto移植到arm上

我们把当前路径下的/etc/mosquitto/下的mosquitto.conf.example文件拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:

cp mosquitto.conf.example /home/topeet/mqtt-arm/

 如下图所示

怎么把mosquitto移植到arm上

然后我们返回到mosquitto的安装目录,我们进到安装目录下mosquitto-1.5/usr/local/bin下面,如下图所示:

怎么把mosquitto移植到arm上

我们把这个目录下所有文件拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:

cp ./*  /home/topeet/mqtt-arm/

如下图所示:

怎么把mosquitto移植到arm上

然后我们返回到mosquitto的安装目录,我们进到安装目录下mosquitto-1.5/usr/local/sbin下面,如下图所示:

怎么把mosquitto移植到arm上

我们把这个目录下的mosquitto二进制文件拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:

怎么把mosquitto移植到arm上

然后我们返回到mosquitto的安装目录,把libuuid-1.0.3  mosquitto-1.5  openssl这个三个文件夹全部拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:

cp -rf libuuid-1.0.3/ mosquitto-1.5/ openssl/ /home/topeet/mqtt-arm

 如下图所示:

怎么把mosquitto移植到arm上

然后我们返回到/home/topeet/下面,使用tar命令打包我们创建的mqtt-arm文件,命令如下:

tar -czf mqtt-arm.tar.gz mqtt-arm/

如下图所示:

怎么把mosquitto移植到arm上

我们把这个压缩包拷贝到开发板的根目录,这里以4412开发板为例,其他开发板操作一致

怎么把mosquitto移植到arm上

我们解压这个压缩包,并进入到解压生成的目录,如下图所示:

怎么把mosquitto移植到arm上

我们把开发板当前目录下libuuid-1.0.3/ mosquitto-1.5/ openssl/三个文件下的lib下的库全部放到开发板的/lib下面,命令如下:

 cp -rf libuuid-1.0.3/lib/* mosquitto-1.5/usr/local/lib/*  openssl/lib/*   /lib/    

如下图所示:

怎么把mosquitto移植到arm上

我们把当前目录下mosquitto.conf.example复制一个和他一模一样名为mosquitto.conf的文件放在/etc下面,命令如下:

cp mosquitto.conf.example   /etc/mosquitto.conf    

如下图所示:

怎么把mosquitto移植到arm上

然后我们把剩下的几个文件全部放在开发板的/bin目录下,命令如下:

 mv mosquitto mosquitto_*  /bin   

如下图所示:

怎么把mosquitto移植到arm上

然后我们返回到开发板的根目录,删掉我们 mqtt-arm.tar.gz的压缩包和解压生成的mqtt-arm文件夹就可以了。

5.测试是否移植成功

以开发板作为服务器,Ubuntu开俩个终端作为订阅者和发布者进行测试

1,我们打开/etc下面的mosquitto.conf文件, 修改里面的第40行为 user root 并取消注释。如下图所示:

怎么把mosquitto移植到arm上

2.使用以下命令启动开发板的mosquitto服务

 mosquitto -d -c /etc/mosquitto.conf

如下图所示:

怎么把mosquitto移植到arm上

查询是否启动成功,命令如下:

 ps -ef |grep  mosquitto

如果成功入下图所示:

怎么把mosquitto移植到arm上

3.使用ping命令ping一下自己的Ubuntu,这里一定要ping通,否则下面的步骤不成功,命令如下,IP为自己Ubuntu的ip

ping 192.168.3.34 -c 3

成功ping通如下图所示:

怎么把mosquitto移植到arm上

4.在文档的第一步,我们就已经在Ubuntu上安装了mosquitto,所示我们直接打开一个终端,订阅主题,命令如下:

mosquitto_sub -h 192.168.3.28 -t "mqtt" -v

 其中参数-h是指定要连接的MQTT服务器,这里的192.168.3.28为开发板的IP,大家要根据自己的IP来设置,-t订阅主题,此处为mqtt,所以主题为mqtt,-v打印更多的调试信息。

如下图所示:

怎么把mosquitto移植到arm上

5.在Ubuntu上打开另一个终端(注意这里又打开了一个终端),发布主题,命令如下:

mosquitto_pub -h 192.168.3.28 -t "mqtt" -m "Hello MQTT"

其中参数-h是指定要连接的MQTT服务器,这里的192.168.3.28为开发板的IP,大家要根据自己的IP来设置,-t订阅主题,此处为mqtt,-m指定消息内容,这里发送的是

Hello MQTT。

如下图所示:

怎么把mosquitto移植到arm上

通信成功以后,我们会在另一个终端看到我们通过开发板作为mqtt服务器转发来的Hello MQTT

信息,如下图所示:

怎么把mosquitto移植到arm上

读到这里,这篇“怎么把mosquitto移植到arm上”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


分享名称:怎么把mosquitto移植到arm上
文章URL:http://hbruida.cn/article/igeggs.html