对不起,我前面的解释没有明确说明如何把LuaJIT编译进Nginx模块中。这里详细说明下:
1. 编译LuaJIT为静态库libluajit.a
2. 创建Nginx模块源文件,例如ngx_lua.c
3. 在ngx_lua.c中,加入下面代码来包含LuaJIT头文件并链接LuaJIT静态库:
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
extern int luaopen_base(lua_State *L);
extern int luaopen_table(lua_State *L);
// 链接其他Lua库
int ngx_lua_init() {
lua_State *L = luaL_newstate();
// 调用Lua库注册函数
luaopen_base(L);
luaopen_table(L);
// 初始化Lua运行环境
return 0;
}
4. 在ngx_lua编译脚本ngx_lua.make中添加:
TARGET = ngx_lua
LUAJIT_LIB = /path/to/libluajit.a
ngx_lua: ngx_lua.o $(LUAJIT_LIB)
$(TARGET): $(OBJECTS) $(LUAJIT_LIB)
$(CC) $^ -o $@
5. 让Nginx在配置安装时包含这个模块
以上Steps把LuaJIT静态库 libluajit.a 编译进了Nginx模块ngx_lua中,通过模块初始化函数实现了Lua运行环境的初始化,从而把Lua整合到Nginx模块中。