首页 > 其他分享 >如何编译工业协议网关软件Neuron

如何编译工业协议网关软件Neuron

时间:2024-07-14 17:28:39浏览次数:10  
标签:网关 neuron make Neuron cd 编译 build &&

说明

最近需要测试一个工业互联网网关的项目,在网上找到了工业协议网关软件Neuron,决定从它开始自己的工作。今天先介绍一下如何在x86平台上编译Neuron。

Neuron简介

Neuron是EMQ(杭州映云科技有限公司)出品的,它在物联网和工业互联网领域算是个领先厂商。我以前上课用的MQTTX客户端就是该公司的产品。

以下介绍来自厂商的网站:

Neuron 是运行在各类物联网边缘网关硬件上的工业协议网关软件,旨在解决工业 4.0 背景下设备数据统一接入难的问题。通过将来自繁杂多样工业设备的不同协议类型数据转换为统一标准的物联网 MQTT 消息,实现设备与工业物联网系统之间、设备彼此之间的互联互通,进行远程的直接控制和信息获取,为智能生产制造提供数据支撑。

Neuron 支持同时为多个不同通讯协议设备、数十种工业协议进行一站式接入及 MQTT 协议转换,仅占用超低资源,即可以通过原生或容器的方式部署在 X86、ARM、RISC-V 和其他架构的物理机中。同时,用户可以通过基于 Web 的管理控制台实现在线的网关配置管理。其强大的性能使得它能够连接数百个工业设备,轻松处理超过 10,000 个数据点。

 Neuron的安装

直接安装deb软件包

Neuron是可以直接用现成的deb软件包安装的。厂商提供的x86和ARM架构的不同软件包。

根据不同版本及架构下载安装包,例如:

$ wget https://www.emqx.com/en/downloads/neuron/2.5.3/neuron-2.5.3-linux-amd64.deb

安装后的版本,Neuron 提供了 30 个点(30 个连接和 30 个数据标签)的免费额度。可在不安装 EMQ 许可证的情况下,运行这些商业模块。超出免费额度后,则必须安装有效的试用版或官方 EMQ 许可证。

源代码编译

Neuron核心架构,仪表板和一些驱动模块(例如 modbus-tcp,mqtt 和 eKuiper 等)是在 LGPLv3 许可下开源的。无需安装 EMQ 许可证即可运行这些开源模块。不过很多工控的驱动模块都是闭源的。

我想对其驱动做一些扩展工作,所以需要对源代码进行编译。

第三方库的编译

首先需要根据​​​​​​​https://github.com/emqx/neuron/blob/main/Install-dependencies.md 的介绍安装一些第三方库。 

openssl

apt-get install libssl-dev openssl

zlog

git clone -b 1.2.15 https://github.com/HardySimpson/zlog.git
cd zlog
make && sudo make install

jansson

git clone https://github.com/neugates/jansson.git
cd jansson && mkdir build && cd build
cmake -DJANSSON_BUILD_DOCS=OFF -DJANSSON_EXAMPLES=OFF ..&& make && sudo make install

mbedtls

git clone -b v2.16.12 https://github.com/Mbed-TLS/mbedtls.git
cd mbedtls && mkdir build && cd build
cmake -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DENABLE_TESTING=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON .. && make && sudo make install

NanoSDK

git clone -b neuron https://github.com/neugates/NanoSDK.git
cd NanoSDK && mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=OFF -DNNG_TESTS=OFF -DNNG_ENABLE_SQLITE=ON -DNNG_ENABLE_TLS=ON .. && make && sudo make install

jwt

git clone -b v1.13.1 https://github.com/benmcollins/libjwt.git
cd libjwt && mkdir build && cd build
cmake -DENABLE_PIC=ON -DBUILD_SHARED_LIBS=OFF .. && make && sudo make install

googletest

git clone -b release-1.11.0 https://github.com/google/googletest.git 
cd googletest && mkdir build && cd build
cmake .. && make && sudo make install

sqlite

curl -o sqlite3.tar.gz https://www.sqlite.org/2022/sqlite-autoconf-3390000.tar.gz
mkdir sqlite3
tar xzf sqlite3.tar.gz --strip-components=1 -C sqlite3
cd sqlite3
./configure CFLAGS=-fPIC && make && sudo make install

源代码下载

安装完以上的第三方库之后,就可以下载Neuron的源代码并编译了。

git clone https://github.com/emqx/neuron
cd neuron
mkdir build && cd build
cmake .. && make

CMakeLists 中有三个可选参数:

  • CMAKE_BUILD_TYPE "Debug",默认编译 debug 版本,如果不需要调试可以改为release。
  • DISABLE_WERROR,将所有的警告当作错误进行处理。
    使用示例:cmake -DISABLE_WERROR=1 ..
  • DISABLE_ASAN,选择是否开启 libasan 内存检测。如果想在其他电脑上分发最终版,建议选上。

安装 Dashboard

Neuron有一个基于网页的管理端,叫 neuron-dashboard, 它并不是Neuron源代码的一部分。到neuron-dashboard页面下载最新的 neuron-dashboard.zip,解压后放到 Neuron 可执行目录下的 dist 目录中。 

运行

完成了以上所有步骤,就可以直接运行程序了。

cd build
./neuron

程序启动后不会有任何提示信息。此时使用浏览器访问本机的7000端口,就可以看到管理端的界面了。默认的密码是admin/0000。

 

程序分发

可以使用ldd命令查看一下程序的依赖情况。

armdev@armdev-VirtualBox:~/neuron/neuron/build$ ldd neuron 
	linux-vdso.so.1 (0x00007ffdb19aa000)
	libasan.so.5 => /lib/x86_64-linux-gnu/libasan.so.5 (0x00007f5a9091a000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5a90914000)
	libneuron-base.so => ./libneuron-base.so (0x00007f5a902f7000)
	libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x00007f5a90175000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5a90026000)
	libzlog.so.1.2 => /usr/local/lib/libzlog.so.1.2 (0x00007f5a9000a000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5a8ffe5000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5a8fdf3000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5a8fde9000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5a8fdce000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f5a91533000)

 这里的libasan文件是个辅助调试的库,如果不希望分发,可以在前面CMake的时候加上DISABLE_ASAN。libzlog也是需要分发的,别忘记。官方版本是不需要分发libsqlite3的,它可以是以静态库的方式嵌入了这个文件。

 

标签:网关,neuron,make,Neuron,cd,编译,build,&&
From: https://blog.csdn.net/bit_mike/article/details/140380613

相关文章

  • CCS工程导入后编译时无法读取头文件的问题
    CCS工程导入后编译时无法读取头文件的问题,主要是由移植之后的文件搜索路径所指向的文件夹不存在导致的。有两种解决办法:①导入工程时将所需要的所有.h、.c以及.lib文件一并打包在工程文件中,复制到Workspace并重新选取搜索路径;②导入工程的电脑安装有C2000WARE,修改CCS中相对路径......
  • 在VSCODE中创建C语言环境,编译、运行、调试。
    1、安装MinGWMinGW-w64-for32and64bitWindowsdownload|SourceForge.net下载下来是一个压缩包对压缩包解压得到文件夹mingw64将文件夹mingw64剪切到C:\ProgramFiles目录下配置环境变量点击系统变量里面的Path将C:\ProgramFiles\mingw64\bin目录添加......
  • KU注册链接:如何手动编译Percona Server for MySQL 5.5
    此文由KU注册链接вт989点сс编译原创,随着MySQL8.x版本的陆续更新,Percona的PerconaServerforMySQL也同样支援,不过想要在新的OS(例如DebianLinux12Bookworm)上使用旧版MySQL,Percona已经不提供5.5版DEB安装档,所以藉由此实验在DebianLinux12Bookwor......
  • qt的工程,转到vs后,中的文件都编译不过,解决办法
    原文链接 ......
  • 编译器
    本页面主要介绍了各系统下各类编译器/解释器的安装步骤。GCCWindows手动下载安装访问MinGW-w64的下载页面,有多个构建版本。方便起见,我们使用由WinLibs提供的构建版本。首先前往WinLibs下载最新的安装包,选择合适的版本,本文选择了GCC12.3.0+LLVM/Clang/LLD/LLDB16.0......
  • 编译安装Kubernetes 1.29 高可用集群(9)--Harbor私有仓库部署
    1.环境说明操作系统:openEuler22.03软件版本:harbor2.10.32.Harbor软件安装2.1安装前准备#systemctldisablefirewalld.service#systemctlstopfirewalld.service#sed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config#setenforce0#hostnamec......
  • 编译ffmpeg 并支持 NVIDIA 硬解码
    1.简述所谓硬件解码就是利用专用的硬件(比如说nvenc)进行解码区别与利用通用计算单元进行解码(CPU,cuda)2.所需要的sdkcuda11.1nvccffmpeg5.1.2nv-codec-header11.1.5.2下载位置4.安装ffnvcodec省略安装cuda和nvcc的方法显卡驱动最好大于430.1.4安装ffnvc......
  • 手动编译安装OpenSSL与OpenSSH
    1、安装必要工具yuminstall-ytarzlib-devel2、编译安装OpenSSLcd/usr/local/srcwgethttps://www.openssl.org/source/openssl-1.1.1w.tar.gztar-xvzfopenssl-1.1.1w.tar.gzcdopenssl-1.1.1w./config--prefix=/usr/local/openssl--openssldir=/usr/local/opens......
  • [笔记]网络原理1 - 集线器,交换机,网关,路由器
    1.一些零散的知识记录OSI七层模型:应表会传网数物TCP/IP五层模型:应传网数物TCP/IP四层模型:应传网+网络接口特定格式,在常用五层模型里面物->电信号(Bits,比特流,有一些类似时钟信号的数据流传输);数据链路->MAC地址(Frames,帧);PPP(路由器之间)协议,CSMA/CD(hub,设备间)协议;网......
  • Modbus转Profinet网关模块连PLC与流量计通讯案例
    一、案例背景在饮品加工厂中,会涉及到流量计的使用,然而达到对流量计的精准控制和数据采集需要用到PLC,由于PLC和流量计可能使用不同的通信协议(如Profinet和Modbus),造成两者不能自接进行通讯和数据传输。在不增加编程工作量的情况下,可使用Modbus转Profinet网关模块来实现。二、Mo......