NotePublic/Ecology/易百纳_EB-RV1126-DC-201/易百纳_EB-RV1126-DC-201_NATS_集...

144 lines
3.2 KiB
Markdown
Raw Normal View History

# 易百纳 EB-RV1126-DC 201 NATS 集成说明
## 依赖
- CMake 3.13
- nats.c-v3.6.1
- protobuf-3.6.0
- protobuf-c-1.3.2
nats.c-v3.6.1 的编译需要使用 CMake 3.13 版本,实际上 3.10.2 以上版本都支持,就是修改 CmakeList.txt 中的 cmake_minimum_required 的话会导致后续配置 buildroot 比较麻烦tar 包的校验值会发生变化),因此如果 Host 为 Ubuntu 且 CMake 版本低于 3.13 的话,建议先 apt 卸载 CMake然后
```bash
snap install cmake --classic
```
buildroot 中的 protobuf-c 为 1.3.0 版本,该版本配合 protobuf-3.6.0 会产生编译错误,需要手动修改为 protobuf-c-1.3.2。
protobuf-c.mk 中修改 PROTOBUF_C_VERSION
```mk
PROTOBUF_C_VERSION = v1.3.2
```
protobuf-c.hash 中增加:
```hash
sha256 53f251f14c597bdb087aecf0b63630f434d73f5a10fc1ac545073597535b9e74 protobuf-c-v1.3.2.tar.gz
```
## Buildroot 集成 nats.c
在 buildroot 的 package 目录中增加 nats-c 文件夹,添加:
- Config.in
- nats-c.hash
- protobuf-c.mk
Config.in 内容如下:
```config
config BR2_PACKAGE_NATS_C
bool "nats-c"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_HAS_THREADS
# host-nats-c only builds on certain architectures
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
depends on BR2_HOST_GCC_AT_LEAST_4_8 # host-nats-c
help
Runtime libraries to use NATS from C/C++.
comment "nats-c needs a toolchain w/ C++, threads, host gcc >= 4.8"
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
|| !BR2_HOST_GCC_AT_LEAST_4_8
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
```
nats-c.hash 内容如下:
```hash
# Locally calculated
sha256 4b60fd25bbb04dbc82ea09cd9e1df4f975f68e1b2e4293078ae14e01218a22bf nats.c-3.6.1.tar.gz
```
protobuf-c.mk 内容如下:
```
################################################################################
#
# nats-c
#
################################################################################
NATS_C_VERSION = 3.6.1
NATS_C_SOURCE = nats.c-$(NATS_C_VERSION).tar.gz
NATS_C_SITE = https://github.com/nats-io/nats.c/archive/refs/tags/v$(NATS_C_VERSION)
NATS_C_DEPENDENCIES = host-protobuf-c
HOST_NATS_C_DEPENDENCIES = host-protobuf-c host-pkgconf
NATS_C_MAKE = $(MAKE1)
NATS_C_INSTALL_STAGING = YES
NATS_C_LICENSE = BSD-2-Clause
NATS_C_LICENSE_FILES = LICENSE
NATS_C_AUTORECONF = YES
HOST_NATS_C_AUTORECONF = YES
$(eval $(cmake-package))
$(eval $(host-cmake-package))
```
之后在 buildroot 中使能 nats-csavedefconfig最后 build buildroot 即可。
## Host 端
使用 Host 软件包管理器卸载 libprotobuf-dev、libprotobuf-c-dev 等。
将 protobuf-3.6.0、protobuf-c-1.3.2、nats.c-3.6.1 从 buildroot 的 dl 文件夹中拷贝出来备用。
进入 protobuf-3.6.0,执行:
```
./autogen.sh
./configure
make -jN
sudo make install
sudo ldconfig
```
进入 protobuf-c-1.3.2,执行:
```
./autogen.sh
./configure
make -jN
sudo make install
sudo ldconfig
```
进入 nats.c-3.6.1,执行:
```
cmake .
make -jN
sudo make install
sudo ldconfig
```
## NATS-Server
下载 ARMv7 的二进制包解压后在 EB-RV1126-DC 201 上直接运行即可。
## 使用 nats.c
Include
```cpp
#include <nats.h>
```
连接参数:
```bash
-lnats -lprotobuf-c -lprotobuf
```