了解mosquitto的小伙伴多数都是想在arm中进行开发,所以将mosquitto移植到ARM板上就尤为重要了,当然也有在x86中进行应用开发的,想了解linux中安装mosquitto可以看我的上一篇文章。

一、材料准备

安装包:openssl、JSON-C、mosquitto

安装环境:ARM板一块

关于安装包的下载参考mosquitto的安装与使用,文章中关于相关源码的下载教程。

二、编译openssl

  1. 在安装路径下创建openssl文件夹
mkdir openssl
  1. 解压并进入openssl-1.1.1l目录
tar -vxf openssl-1.1.1l.tar.gz
cd openssl-1.1.1l
  1. 配置安装目录并生成Makefile文件
./config no-asm -shared --prefix=/home/linux/arm-lib/openssl



4. 进入Makefile文件,将编译工具修改为交叉编译链,修改的地方如下

PLATFORM=arm
CROSS_COMPILE=arm-linux-gnueabihf-
  1. 由于ARM基本的都是32位,所以需要Makefile文件中的‘-m64’删除,如下图所示

  2. 执行make编译



    7.编译完成后执行make install,会在安装路径中生成相应的文件,如下图所示:

三、编译mosquitto

  1. 在安装路径下创建mosquitto文件
mkdir mosquitto
  1. 解压并进入mosquitto-2.0.11目录
tar -vxf mosquitto-2.0.11.tar.gz
cd mosquitto-2.0.11
  1. 修改config.mk配置文件

    修改编译器
CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++

修改配置项



添加安装路径和openssl库路径

WITH_UUID:=no

CC=arm-linux-gnueabihf-gcc
CXX=arm-linux-gnueabihf-g++
prefix=/home/xfg/linux/arm-lib/mosquitto
CFLAGS:=-I/home/xfg/linux/arm-lib/openssl/include
LDFLAGS=-L/home/xfg/linux/arm-lib/openssl/lib -lssl -lcrypto

  1. 执行make编译



    到此mosquitto的编译已经完成,编译过程中不要使用sudo,不然修改一些不一要的软件导致环境系统的工具无法正常工作。

四、移植mosquitto

将openssl、mosquitto编译生成的库搬运到开板上,这里我使用nfs的方式拷贝文件,如果不会使用nfs的小伙伴可以参考我之前的文章或者百度一下。

  1. 拷贝openssl,在开发版的‘/usr/local’路径下创建‘ssl’文件,然后将之前编译openssl的文件拷贝到ssl文件中
cd /usr/local
sudo mkdir ssl

  1. 拷贝mosquitto文件,同样的方式创建‘mosquitto’文件,然后将之前编译mosquitto的文件拷贝到mosquitto文件中
sudo mkdir mosquitto



3. 配置环境路径

#matt start
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mosquitto/lib
export PATH=$PATH:/usr/local/ssl/bin
export PATH=$PATH:/usr/local/mosquitto/bin
export PATH=$PATH:/usr/local/mosquitto/sbin



4. 使环境路径生效

source /etc/profile

到此mosquitto移植到ARM板的任务已经完成,jiexia

问题处理

  1. 移植mosquitto2.0.11版时,编译过程需要cJSON.h文件,所以编译过程中会出现错误../../config.h:86:27: 致命错误: cjson/cJSON.h:没有那个文件或目录



    解决方法:

    这个问题主要是因为编译生成的openssl库中没有cJSON.h文件,所以只需要将JSON-C移植到openssl的库中,

    获取JSON-C库并进入cJSON目录
git clone https://github.com/DaveGamble/cJSON
cd cJSON

修改Makefile文件



编译并安装

make
make install

参考文献

05 --- 移植mosquitto到arm平台:https://blog.csdn.net/m0_50620305/article/details/115676892?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-3-115676892.pc_agg_rank_aggregation&utm_term=arm移植+mosquitto&spm=1000.2123.3001.4430

移植安装mosquitto到ubuntu和ARM开发板:https://blog.csdn.net/qq_40452910/article/details/98781922?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-5-98781922.pc_agg_rank_aggregation&utm_term=arm移植+mosquitto&spm=1000.2123.3001.4430

mosquitto移植到ARM的更多相关文章

  1. 将SQLite移植到ARM板上 (转)

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它, 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够 ...

  2. 怎样将lua移植到arm平台的linux内核

    将脚本移植到内核是一件非常酷的事情,lua已经被移植到NetBSD的内核中,也有一个叫lunatik的项目把lua移植到了linux内核.仅仅可惜仅仅支持x86.不支持arm,在网上搜索了下,没有找到 ...

  3. iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板

    实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统   开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubunt ...

  4. SQL数据库移植到ARM板步骤

    SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...

  5. iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板

    本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...

  6. Appweb-6.1.1 移植到ARM

    Appweb-6.1.1 移植到ARM 编译环境:ubuntu-12.04 x64 开发平台:Hi3535 arm版 编译版本:appweb-6.1.1.zip ESP下载地址=> ESP we ...

  7. ffmpeg之移植到ARM

    移植方法分为两种:第一种手工移植,第二种buildroot移植. 第一种手工移植: 优点:灵活性高 缺点:重复工作多 一.配置 ./configure --enable-memalign-hack - ...

  8. Qt 4.7.2移植到ARM教程

    Qt的移植包括步骤如下: 1.下载并安装VMware WorkStation 12(最好比较高级的版本,早期的版本共享目录在虚拟机里可能显 示不了). 2.下载ubuntu 14.0.4(最好是lts ...

  9. Qt5.4.1移植到arm——Linuxfb篇

    Qt5与Qt4对比有很大的改变,其最大的特性在于模块化,并且很明显的是不再见到Qt4用到的qws,Qt5新增了QPA系统,基于QPA使得Qt5移 植到一个新平台非常简单而又具有极强的底层扩展能力:同时 ...

  10. 交叉编译VIM并移植到ARM嵌入式Linux系统

    原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任.   众所周知,vim是vi的增强版本,实际体验要比vi好用很多,由于笔者为ARM系统制作的基于busybo ...

随机推荐

  1. ForkJoinPool在生产环境中使用遇到的一个问题

    1.背景 在我们的项目中有这么一个场景,需要消费kafka中的消息,并生成对应的工单数据.早些时候程序运行的好好的,但是有一天,我们升级了容器的配置,结果导致部分消息无法消费.而消费者的代码是使用Co ...

  2. PyCharm专业版延长使用时间【极简】

    关注公众号[靠谱杨阅读人生]回复[py]获取破解包! 准备好最新版本的PyCharm(去官网下载页面上的第一个就可以,我使用的版本如下图所示) 打开软件选择试用,进去之后可以新建一个项目然后把这个压缩 ...

  3. HTTP编码和解码与基本认证

    咱们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流.那么在这二者之间的转换规则就须要一个统一的标准,不然把计算机上文档就乱码了:因而为了实现转换标准,各类字符集标准 ...

  4. #SPFA#洛谷 4042 [AHOI2014/JSOI2014] 骑士游戏

    题目 分析 如果我想普通攻击1,那么必须干掉所有产生的其它怪兽,这不由得可以用一个不等式来表示, \(普攻+\sum need<法攻\) 但是所需要消灭的怪兽同样可以这样进行,所以它可能具有后效 ...

  5. #前缀和,后缀和#洛谷 4280 [AHOI2008]逆序对

    题目传送门 分析 首先填的数字单调不降,感性理解 那可以维护\([a_1\sim a_{i-1}]\)的\(cnt\)后缀和以及 \([a_{i+1}\sim a_n]\)的\(cnt\)前缀和,那可 ...

  6. VS2019快捷键

    快捷键功能CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 ...

  7. 在HarmonyOS上使用ArkUI实现计步器应用

      介绍 本篇Codelab使用ArkTS语言实现计步器应用,应用主要包括计步传感器.定位服务和后台任务功能: 1.  通过订阅计步器传感器获取计步器数据,处理后显示. 2.  通过订阅位置服务获取位 ...

  8. nginx重新整理——————静态服务[四]

    前言 简单介绍一下nginx的静态服务. 正文 一般静态服务一般是alias 和 root. 就是上面这个哈. 那么root和alias 的区别是啥呢? 比如root: 然后修改一下就是: 如果这样配 ...

  9. 重新点亮shell————awk数组[十四]

    前言 简单介绍一下awk的数组. 正文 数组的定义: 数组的遍历: 删除数组: 例子: 例子2: 结 下一节awk函数.

  10. RestfulApi 学习笔记——内容协商(三)

    前言 什么是内容协商呢?是这样的,我们在请求的时候都有两个属性,一个是Content-Type,另一个是accept,这两个什么意思呢? content-type 这个是表示自己传输的是什么内容,就像 ...