NJET模块嵌入lua指南
介绍
在NJET和其它系统集成时,有时需要对接外部系统,因为面临的外部系统千差万别, 为每个系统开发单独的c模块实现繁琐,因此可以通过嵌入lua的模式实现定制。作为server端, openresty 开源的lua模块可以满足需要,但作为client,需要额外的框架及lua库
client嵌入架构
额外Lua库
第三方的Lua 库 在auto/lib/luapkg 目录下
由于rpm 构建时,编译时会使用源码目录中的luajit, 以及rpm临时安装文件会拷贝到 rpmbuild 的 %{buildroot}目录,因此所有放到 luapkg 目录下的第三方模块,需要稍微做一些修改,Makefile 中的编译及安装阶段需要识别以下环境变量:
变量 | 描述 |
---|---|
DESTDIR | make 时指定的安装路径前缀 |
LUA_MODULE_DIR | Lua 模块安装路径 |
LUA_CMODULE_DIR | Lua C 模块安装路径 |
LUA_INCLUDE_DIR | Lua 头文件地址 |
LUA_LIB_DIR | Lua 链接的库地址 |
这些环境变量外部构建的脚本可能会设置不同的值, 如果外部环境变量有设置这些值,第三方模块的编译及安装脚本需要使用外部设置的值。例如:
LUA_MODULE_DIR ?= /usr/local/share/lua/5.1
LUA_CMODULE_DIR ?= /usr/local/lib/lua/5.1
LUA_INCLUDE_DIR ?= /usr/local/include/luajit-2.1
LUA_LIB_DIR ?= /usr/local/lib
。。。。
install:
mkdir -p $(DESTDIR)$(LUA_CMODULE_DIR)/smithsnmp
cp core/core.so $(DESTDIR)$(LUA_CMODULE_DIR)/smithsnmp/
cp -a lualib/* $(DESTDIR)$(LUA_MODULE_DIR)