Linux环境下交叉编译mosquitto及其依赖
本文的目录索引
文章目录
- **本文的目录索引**
- **Linux环境下交叉编译mosquitto**
- 1.相关依赖(两个库外加一个交叉编译工具链)
- 2.开发环境以及目标环境说明
- 3.准备适用的交叉编译工具链
- 4.获取OpenSSL和mosquitto源码
- 5.创建编译源码后的输出文件路径
- 6.编译OpenSSL并输出文件
- 7.编译mosquitto源码并输出文件
- 8.在目标工程中如何使用输出文件
Linux环境下交叉编译mosquitto
1.相关依赖(两个库外加一个交叉编译工具链)
MQTT协议依赖于OpenSSL库,以及第三方客户端库,此处选择mosquitto库,并进行交叉编译,此次交叉编译工具链为arm-none-linux-gnueabi,其他工具链可以参考该方法生成所需的mqtt动态库及相关文件。
2.开发环境以及目标环境说明
本次的开发机器为VMware虚拟机的Ubuntu系统,目标机器为SIMCom公司的高通系列SIM7600CE-T。
3.准备适用的交叉编译工具链
首先在开发机器上安装目标机器的编译工具链arm-none-linux-gnueabi下载地址可以自行搜索,如由爱好者提供的:某度网盘的交叉编译工具链资源链接 ,或者通过官方渠道(不推荐):官方提供的交叉编译工具链资源链接
假设你使用的是解压版本的工具链,解压后放在自定义目录/home/forwardxiang/arm_linux
下,便拥有了目标机器的编译工具链,使用命令查看其路径:which arm-none-linux-gnueabi-gcc
,之后需要使用该绝对路径编译OpenSSL和mosquitto。
4.获取OpenSSL和mosquitto源码
获取OpenSSL和mosquitto源码并解压,先编译OpenSSL再编译mosquitto(由依赖关系决定先后顺序)。推荐源码:
OpenSSL官方:wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2e.tar.gz
Mosquitto官方:wget https://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz
5.创建编译源码后的输出文件路径
先创建自定义目录用于存放编译后生成的输出文件,这里创建两个:/opt/openssl与/opt/mosquitto
。
6.编译OpenSSL并输出文件
在解压后的OpenSSL目录下执行配置文件并指定输出路径:./config no-asm shared --prefix=/opt/openssl
然后在Makefile文件中修改编译工具链路径:
CC = /opt/arm_linux/bin/arm-none-linux-gnueabi-gcc
AR = /opt/arm_linux/bin/arm-none-linux-gnueabi-ar $(ARFLAGS) r
RANLIB =/opt/arm_linux/bin/arm-none-linux-gnueabi-ranlib
删除文中含有-m64的内容,一般有两处。
然后执行编译make并安装sudo make install。如果无误则会在输出文件夹生成mosquitto依赖的输出文件。
7.编译mosquitto源码并输出文件
进入mosquitto源码并修改配置文件config.mk,关闭如下功能(减少依赖文件):
WITH_SRV:=no 和WITH_UUID:=no和WITH_WEBSOCKETS:=no和WITH_DOCS:=no
并在功能配置后紧接着指定依赖openssl头文件以及库文件路径:
CFLAGS += -I/opt/openssl/include
LDFLAGS += -L/opt/openssl/lib -lssl -lcrypto
在该配置文件中最后几行:
指定编译工具链脚本位置 :STRIP?=/opt/arm_linux/bin/arm-none-linux-gnueabi-strip
找到输出文件的路径并修改为自定义的目录:prefix=/opt/mosquitto
然后在终端窗口的编译命令中指定编译工具链(注意下面是一条命令):
make CC=/opt/arm_linux/bin/arm-none-linux-gnueabi-gcc \
CXX=/opt/arm_linux/bin/arm-none-linux-gnueabi-g++
最后再执行安装命令:sudo make install 如果报/usr/bin/pod2man相关的错误,可以执行删除命令:sudo rm /usr/bin/pod2man 再重新安装。
8.在目标工程中如何使用输出文件
如果上述步骤都顺利(那你太幸运了,一般来说嵌入式编译都会有各种问题),你可以将自定义文件夹/opt/mosquitto拷贝到目标机器中,并使用位于该文件夹的子文件夹./bin/中的可执行文件进行测试。
如果测试结果表明能在目标平台上正确运行,那么正式使用时只需要移植输出文件中的lib文件夹和include文件夹:
移植lib文件夹下的动态库文件至目标工程中的动态库文件夹下,移植文件夹include文件夹下的头文件至目标工程中的头文件夹下。并修改目标工程的Makefile文件添加两者所在的工程路径。
Linux环境下交叉编译mosquitto及其依赖相关推荐
- Linux环境下交叉编译工具链的制作
本文参照教材嵌入式Linux开发入门宝典 一.在Windows上安装虚拟机 1.浏览器搜索VMware,下载VMware Workstation Pro最新版,目前为16.2.3,并完成安装. 2.打 ...
- mosquitto在Linux环境下的部署/安装/使用/测试
看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http:/ ...
- c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码
在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include #include //线程头文件 //pthread不是linux下的默认的库,也就是 ...
- linux下的python安装,linux环境下的python安装过程
一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...
- Linux环境下段错误的产生原因及调试方法小结
From:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基 ...
- [转]Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的"段错误"(Segme ...
- 【Linux】手把手教你在 Linux 环境下部署 Oracle 数据库!
来源:公众号[杰哥的IT之旅] 作者:三笠 相信大家第一次接触 Oracle 数据库时,大多数是在 windows 环境下安装,方便快捷,基本上可以说是一直下一步就能顺利安装成功.然而企业级的数据库, ...
- 尚学python课程---11、linux环境下安装python注意
尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...
- linux环境下安装多个任意版本的python环境
linux环境下安装多个任意版本的python环境 安装方法可以归结为 [下载 + 编译 + 配置环境变量] 下载Python Windows下载发送到linux上 step1. 下载linux版本的 ...
最新文章
- 使用sublime text3 连接sftp/ftp(远程服务器)
- 第七届山东省省赛C Proxy(最短路)
- 开源项目成熟度分析工具-利用github api获取代码库的信息
- 9、使用GROUP BY分组查询
- Winform 打印PDF顺序混乱,获取打印队列
- char[]和char*的区别(转)
- 485转232转换器产品介绍及性能参数介绍
- UVA 558 SPFA 判断负环
- 前端开发使用react实现简易路由
- Starling粒子系统工具
- Jenkins_第五关_系统管理(1)
- java 对象复制_程序员应该知道java虚拟机的22个重难点(干货)
- 基于微信小程序的校园论坛系统开发过程
- 2014,念念不忘 必有回响
- Android高手笔记 - IO优化
- 智能车八邻域图像算法_二
- 详解互联网平台的资金系统方案 自建支付清结算系统优势明显
- 恩兔NS-1刷ARMBIAN教程
- 后退一步 小程序_微信小程序返回上一级页面的实现代码
- idea2021运行内存扩大
热门文章
- Profinet国产方案
- 每日一题10022-潜伏者
- 利用IDL输出影像快视图、拇指图
- 电脑软件超时、MOCK测试方案
- 计算机三级网络技术ip地址,2019年计算机等考三级网络技术辅导:IP地址
- VScode运行ts文件出现错误Unexpected token ‘export‘
- HTML大学班级活动网页设计 、大学校园HTML实例网页代码 、本实例适合于初学HTML的同学...
- 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题
- 超简单的C语言贪吃蛇 不闪屏 双缓冲
- TM4C USB-HID了解学习(二)