本文小编为大家详细介绍“怎么把mosquitto移植到arm上”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么把mosquitto移植到arm上”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
1. 交叉编译uuid库
我们把uuid的源码拷贝到Ubuntu,作者是拷贝拷贝到了/home/topeet/mqtt下面,如下图所示:
输入以下命令,解压源码并进入解压生成的文件夹:
tar -vxf libuuid-1.0.3.tar.gz
如下图所示:
然后我们在/opt/下创建一个名为mosquitto-arm的文件夹,命令如下:
mkdir -p /opt/mosquitto-arm
如下图所示:
配置源码,我们在解压生成的uuid库的文件夹输入以下命令:
./configure --prefix=/opt/mosquitto-arm/libuuid-1.0.3 CC=arm-none-linux-gnueabi-gcc --host=arm-linux
如下图所示:
最后,编译并安装,命令如下:
make
make install
编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个libuuid的文件夹
2. 交叉编译openssl库
解压压缩包进进入解压后的目录
tar -vxf openssl-1.0.2g.tar.gz
cd openssl-1.0.2g
如下图所示。作者是放在了/home/topeet/mqtt目录下
配置编译参数
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中没有,就没管这个。
如下图所示:
修改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
如下图所示:
编译并安装
make
make install
编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个openssl的文件夹
编译源码
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库的路径,否则编译不过去。
如下图所示:
编译成功如下图所示:
安装,命令如下
make DESTDIR=/opt/mosquitto-arm/mosquitto-1.5 install
编译并安装成功后会在我们设置/opt/mosquitto-arm下得到一个mosquitto-1.5的文件夹
至此,我们mosquitto就已经交叉编译完成了
4.把mosquitto移植到开发板
在Ubuntu的/home/topeet/下创建一个mqtt-arm的文件夹,如下图所示:
我们进入我们安装的mosquitto-1.5目录下,作者这里是安装在了/opt/mosquitto-arm下,如下图所示:
我们把当前路径下的/etc/mosquitto/下的mosquitto.conf.example文件拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:
cp mosquitto.conf.example /home/topeet/mqtt-arm/
如下图所示
然后我们返回到mosquitto的安装目录,我们进到安装目录下mosquitto-1.5/usr/local/bin下面,如下图所示:
我们把这个目录下所有文件拷贝到我们在/home/topeet/下创建一个mqtt-arm的文件夹,命令如下:
cp ./* /home/topeet/mqtt-arm/
如下图所示:
然后我们返回到mosquitto的安装目录,我们进到安装目录下mosquitto-1.5/usr/local/sbin下面,如下图所示:
我们把这个目录下的mosquitto二进制文件拷贝到我们在/home/topeet/下创建一个mqtt-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
如下图所示:
然后我们返回到/home/topeet/下面,使用tar命令打包我们创建的mqtt-arm文件,命令如下:
tar -czf mqtt-arm.tar.gz mqtt-arm/
如下图所示:
我们把这个压缩包拷贝到开发板的根目录,这里以4412开发板为例,其他开发板操作一致
我们解压这个压缩包,并进入到解压生成的目录,如下图所示:
我们把开发板当前目录下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.conf.example复制一个和他一模一样名为mosquitto.conf的文件放在/etc下面,命令如下:
cp mosquitto.conf.example /etc/mosquitto.conf
如下图所示:
然后我们把剩下的几个文件全部放在开发板的/bin目录下,命令如下:
mv mosquitto mosquitto_* /bin
如下图所示:
然后我们返回到开发板的根目录,删掉我们 mqtt-arm.tar.gz的压缩包和解压生成的mqtt-arm文件夹就可以了。
5.测试是否移植成功
以开发板作为服务器,Ubuntu开俩个终端作为订阅者和发布者进行测试
1,我们打开/etc下面的mosquitto.conf文件, 修改里面的第40行为 user root 并取消注释。如下图所示:
2.使用以下命令启动开发板的mosquitto服务
mosquitto -d -c /etc/mosquitto.conf
如下图所示:
查询是否启动成功,命令如下:
ps -ef |grep mosquitto
如果成功入下图所示:
3.使用ping命令ping一下自己的Ubuntu,这里一定要ping通,否则下面的步骤不成功,命令如下,IP为自己Ubuntu的ip
ping 192.168.3.34 -c 3
成功ping通如下图所示:
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打印更多的调试信息。
如下图所示:
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。
如下图所示:
通信成功以后,我们会在另一个终端看到我们通过开发板作为mqtt服务器转发来的Hello MQTT
信息,如下图所示:
读到这里,这篇“怎么把mosquitto移植到arm上”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。