热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MQTT(一)移植mosquitto到开发板

一、安装opensslmosquitto的安装依赖openssl里的库libssl.so.1.1和libcrypto.so.1.1。1.下载openssl官方下载网站ÿ

一、安装openssl

mosquitto的安装依赖openssl里的库libssl.so.1.1和libcrypto.so.1.1。

1. 下载openssl
官方下载网站:https://www.openssl.org/source/,目前官方测试版本已经到3.0,稳定版本是1.1,这里下载的是1.1版本。
在这里插入图片描述
2. 解压

解压下载的安装包,进入解压后的文件夹,创建安装目录__install:

tar -zxvf openssl-1.1.1j.tar.gz
cd openssl-1.1.1j/
mkdir __install

3. 编译配置

./config no-asm shared --prefix=$(pwd)/__install

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

shared :生成动态连接库

–prefix :指定make install后生成目录的路径,$(pwd)为当前文件夹

4. 修改Makefile文件

一共两处:第一,修改交叉编译工具

##### User defined commands and flags ################################# We let the C compiler driver to take care of .s files. This is done in
# order to be excused from maintaining a separate set of architecture
# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
# gcc, then the driver will automatically translate it to -xarch=v8plus
# and pass it down to assembler. In any case, we do not define AS or
# ASFLAGS for this reason.CROSS_COMPILE=mipsel-openwrt-linux-
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
CPPFLAGS=
CFLAGS=-Wall -O3
CXXFLAGS=-Wall -O3
LDFLAGS=
EX_LIBS=

把CROSS_COMPILE=设为自己的编译工具,我这里设置的是mipsel-openwrt-linux-,可能需要考虑是否已经将交叉编译的工具链设置到全局路径中,否则这里是不是要改为绝对路径。

第二,去掉工程选项中-m64标志,-m64是针对64位系统的,我们的板子是32位,所以这里去掉。


##### Project flags ################################################### Variables starting with CNF_ are common variables for all product typesCNF_CPPFLAGS=-DNDEBUG
#CNF_CFLAGS=-pthread -m64
CNF_CFLAGS=-pthread
#CNF_CXXFLAGS=-std=c++11 -pthread -m64
CNF_CXXFLAGS=-std=c++11 -pthread
CNF_LDFLAGS=
CNF_EX_LIBS=-ldl -pthread

5. 编译安装

make
make install

成功后,编译出来的文件在_install的文件夹,其中include为头文件,lib为程序运行中用到的库

bin include lib share ssl

到这里,openssl安装完毕,接下来安装mosquitto。


二、安装mosquitto

1. 官网下载源码

https://mosquitto.org/download/

在这里插入图片描述
这里直接下载源码包,在linux下解压,进入目录

tar -zxvf mosquitto-2.0.8
cd mosquitto-2.0.8/

2. 修改config.mk文件

# Build with SRV lookup support.
WITH_SRV:=no# Build with websockets support on the broker.
WITH_WEBSOCKETS:=no# Build mosquitto_sub with cJSON support
WITH_CJSON:=no
.
.
.
STATIC_LIB_DEPS:=#add
CFLAGS +=-I/{上文openssl安装的路径}/openssl-1.1.1j/__install/include
LDFLAGS += -L/{上文openssl安装的路径}/openssl-1.1.1j/__install/lib -lssl -lcryptoAPP_CPPFLAGS=$(CPPFLAGS) -I. -I../../ -I../../include -I../../src -I../../lib
APP_CFLAGS=$(CFLAGS) -DVERSION=\""${VERSION}\""
APP_LDFLAGS:=$(LDFLAGS)
.
.
.
INSTALL?=install
#prefix?=/usr/local
prefix?=/home/cross_mqtt/mqtt_install
incdir?=${prefix}/include
libdir?=${prefix}/lib${LIB_SUFFIX}
localedir?=${prefix}/share/locale
mandir?=${prefix}/share/man
#STRIP?=strip
STRIP?=mipsel-openwrt-linux-strip

参考网上的做法,把WITH_SRV和WITH_WEBSOCKETS设为no,编译的时候报缺少cJSON文件,这里我也是直接去掉了。后面添加了之前安装的openssl的安装路径,CFLAGS和LDFLAGS对应头文件和库文件。最后是修改默认安装路径,因为这里是交叉编译的库,最好是重新建立目录保存,还有STRIP也需要修改成交叉编译工具的STRIP,最好使用绝对路径。

3. 编译安装

make CC=mipsel-openwrt-linux-gcc CXX=mipsel-openwrt-linux-g++
make install

CC和CXX换成自己的交叉编译工具,最好使用绝对路径。

安装完成后,在mqtt_install目录下可以看到以下文件

bin include lib sbin share

使用时,把include和lib两个目录放在工程目录下,与源码一起编译,然后把lib下的库文件放到开发板即可运行。下一篇通过测试代码,简单了解mqtt的使用。

参考:移植安装mosquitto到ubuntu和ARM开发板


推荐阅读
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • 基于SSL的mysql服务器的主从架构实现说明:本文选用172.16.22.1作为主服务器,172.16.22.3作为从服务器从服务器的mysql软件版 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • charles3.11.1抓https包
    结论先行:用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求加固之后的包【也就是要上应用市场的包】,抓不到https请求电脑上的操作:1.安装证书【电脑上安装了 ... [详细]
  • Howtobuilda./configure&&make&&makeins ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
author-avatar
停留的烟蒂_984
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有