概述

本次移植使用创龙的 TL138-EVM 开发板,基于 TI 的 MCSDK 开发环境。具体上位机系统为 Ubuntu 12.04-32bit,软件环境基于创龙的用户手册搭建。

为了移植后在 138 上运行的 web 服务也能使用 mosquitto,所以编译构建时要开启其 libwebsocket 功能支持。所以这里移植就总共分三步走。交叉编译 libwebsocket,交叉编译 mosquitto,移植编译结果到目标文件系统。

交叉编译 libwebsocket

准备工作

官网下载源码包: https://libwebsockets.org/

构建过程需要比 Ubuntu 的 apt-get 方式安装的更高版本的 cmake 工具,可以参考这里进行安装:https://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04

编译过程

  • 进入解压后的源码包 cd libwebsockets-master
  • 创建 build 目录。mkdir build
  • 编辑交叉编译 cmake 文件。vim ../cross-arm-linux-gnueabihf.cmake
  • 修改文件中的路径变量,指向 MCSDK对应位置。 CROSS_PATH, CMAKE_FIND_ROOT_PATH, CMAKE_INSTALL_PREFIX
  • source MCSDK 开发环境。source /home/jack/omapl138/ti/mcsdk_1_01_00_02/linux-devkit/environment-setup
  • 执行 cmake。cmake  ..  -DCMAKE_INSTALL_PREFIX:PATH=/usr  -DCMAKE_TOOLCHAIN_FILE=../cross-arm-linux-gnueabihf.cmake  -DLWS_WITHOUT_EXTENSIONS=1  -DLWS_WITH_SSL=0
  • 编译并提取生成的文件。make && make install 。生成的文件提取到 websockets-lib 目录。

上述修改 cmake 文件中的三个变量的参考:

set(CROSS_PATH /home/jack/omapl138/ti/mcsdk_1_01_00_02/linux-devkit/sysroots/i686-arago-linux/usr )

set(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}" "/home/jack/omapl138/ti/mcsdk_1_01_00_02/linux-devkit/sysroots/armv5te-3.3-oe-linux-gnueabi")

set(CMAKE_INSTALL_PREFIX "/home/jack/project/sinoyue-138/mosquitto/libwebsockets-master/build/websockets-lib/")

交叉编译 mosquitto

准备工作

官网下载源码包:http://mosquitto.org/download/

编译过程

  • 解压并进入源码包。 cd mosquitto-1.4.14
  • 编辑 config.mk 配置前面交叉编译出来的 libwebsocket 的头文件和库的路径。
  • source MCSDK 开发环境。source /home/jack/omapl138/ti/mcsdk_1_01_00_02/linux-devkit/environment-setup
  • 编译。make WITH_SRV=no WITH_WEBSOCKETS=yes WITH_TLS=no CROSS_COMPILE=arm-arago-linux-gnueabi- CC=gcc CXX=g++ AR=ar
  • 提取生成的文件。mkdir build  &&  make install DESTDIR=/home/jack/project/sinoyue-138/mosquitto/mosquitto-1.4.14/build

上述修改 config.mk 的示例如下:

ifeq ($(WITH_WEBSOCKETS),yes)
    BROKER_CFLAGS:=$(BROKER_CFLAGS) -DWITH_WEBSOCKETS -I/home/jack/project/sinoyue-/mosquitto/libwebsockets-master/build/include
    BROKER_LIBS:=$(BROKER_LIBS) -lwebsockets -L/home/jack/project/sinoyue-/mosquitto/libwebsockets-master/build/lib
endif

安装到 138 文件系统

安装 libwebsocket

  • 把生成的 websockets-lib 传输到 138 文件系统。
  • 安装。cp -r websockets-lib /usr
  • sync

安装 mosquitto

  • 把生成 build 文件夹传输到 138 文件系统。
  • 安装配置文件。cp -r ./build/etc /
  • 安装头文件和库文件等。 cp -r ./build/usr/local /usr
  • sync

简单试验

在三个不同终端中依次执行以下操作:

  • 启动 broker。mosquitto
  • 订阅。mosquitto_sub -t 'test/topic' -v
  • 发布。mosquitto_pub -t 'test/topic' -m 'hello world'

发布之后即可看到订阅的终端收到发布的消息。

至此,大功告成!

廖杰良 - 2017-12-26

移植 MQTT broker mosquitto 到 omapl138的更多相关文章

  1. arm linux 移植 MQTT (paho、mosquitto)

    前言 我们在这里做2件事情: 1)编译 paho.mqtt.mosquitto 2个开源项目的c版本库(mosquitto库没有用上) 2)编译好 依赖 paho.mqtt的库编写例程 + mosqu ...

  2. Python:Mac 下 MQTT 服务器 Mosquitto 的配置

    我在Mac电脑上搭建时遇到了一些不同于网上大部分情况的问题,特此分享给可能也有遇到相同情况又找不到解决方法的人. 我的电脑系统:macOS Mojave 10.14.3. paho-mqtt 的安装 ...

  3. MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署

    在mqtt的官方网站,有许多mqtt,其中:MosquittoAn Open Source MQTT server with C, C++, Python and Javascript clients ...

  4. MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动

    在MQTT 官网 (http://mqtt.org/software)中有众多MQTT的实现方式.具体参看官网,Moquette是基于Apache Mina 的模型的一个Java MQTT broke ...

  5. EMQ (Erlang/Enterprise/Elastic MQTT Broker)

    EMQ (Erlang/Enterprise/Elastic MQTT Broker) https://www.cnblogs.com/SteveLee/p/9843215.html MQ介绍 EMQ ...

  6. MQTT协议 - arduino ESP32 通过精灵一号 MQTT Broker 进行通讯的代码详解

    前言 之前研究了一段时间的 COAP 协议结果爱智那边没有测试工具,然后 arduino 也没有找到合适的库,我懒癌发作也懒得修这库,就只能非常尴尬先暂时放一放了.不过我在 爱智APP -> 设 ...

  7. MQTT消息中间件Mosquitto的安装和配置

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  8. 【002:ESP8266 移植 Mqtt 】

    系统环境: ubuntu 16.04 64bitSDK版本: esp_iot_sdk_v1.3.0记录时间: 2016年10月13日联系方式: yexiaopeng1992@126.com 背景:在E ...

  9. MQTT之 Mosquitto hello world的使用

    服务端发布消息模式,客户端订阅: 终端一中启动 moquitto 服务器 shallbeThatIshallbe:mosquitto iamthat$ 1427293344: Opening ipv4 ...

随机推荐

  1. Asp.Net MVC 中的 Cookie(译)

    Asp.Net MVC 中的 Cookie(译) Cookie Cookie是请求服务器或访问Web页面时携带的一个小的文本信息. Cookie为Web应用程序中提供了一种存储特定用户信息的方法.Co ...

  2. java面试扫盲:对象初始化顺序(真的未必能答对)

    记录下面试里面遇到的一些java盲区,一方面扫描自己的知识盲区,一方面也可以给后面面试的朋友一些警示,以免面试的时候出现不知道的尴尬情况. 提出问题:父类静态属性,父类属性,父类构造方法,子类静态属性 ...

  3. java 虚拟机的类加载机制

    Java 虚拟机的类加载机制 关于类加载机制: ​ 虚拟机把描述类的数据从Class 文件加载到内存,并对数据进行效验.转换解析和初始化,最终 形成可以被虚拟机直接使用的Java 类型,就是虚拟机的类 ...

  4. 表字符集latin1,client如何查看中文字符

    表结构如下: . row *************************** Table: my_data_7e Create Table: CREATE TABLE `my_data_7e` ( ...

  5. Xshell 的安装教程

    Xshell就是一个远程控制RHEL的软件:其他的还有很多,用什么都无所谓(根据公司情况). 下面我们来安装下这个工具: 双击exe 点下一步: 选 免费的 然后下一步:(免费的功能足够用了) 点接受 ...

  6. 关于web变量配置问题

    关于web变量配置问题 webservice里面接口完成时考虑到接口可能用在不同的服务器,不同的数据库所以将链接地址修改成变量,在webconfig里面去修改它更加的容易方便 假始根据在同一个服务器里 ...

  7. 《Linux命令行与shell脚本编程大全》第十三章 更多的结构化命令

    本章讨论bash shell的循环命令for.while和until 13.1 for命令 重复执行一系列命令在编程中很常见. bash shell提供了for命令,允许你创建一个遍历一系列值的循环. ...

  8. 使用Gulp构建前端自动化方案

    前言 在刚入门前端的时候,我们并不清楚前端有工具可以帮我们自动化打包压缩文件,当时只关注能实现功能就可以了,也不太在意前端性能优化的问题,随着项目功能的复杂,项目也变得越来越大,页面的执行速度也开始变 ...

  9. Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http: ...

  10. HTML5将给企业带来什么?

    HTML5是近几年来互联网行业的热门词汇,火热的厉害,未来的网络属于HTML5. 乔布斯生前也在公开信<Flash之我见>中预言:像HTML5这样在移动时代中创立的新标准,将会在移动设备上 ...