# 易百纳 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-c,savedefconfig,最后 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 ``` 连接参数: ```bash -lnats -lprotobuf-c -lprotobuf ```