【待反馈】Nginx安装脚本安装某些版本Nginx时编译lua-cjso
Linux面板的Nginx安装脚本安装某些版本Nginx时Install_cjson函数部分编译lua-cjson存在问题首先的报错的内容是找不到 Lua 开发头文件(lua.h)不说废话,有问题的地方在:
安装某些Nginx版本的时候脚本装的是LuaJIT2.1
但Install_cjson函数$download_Url/install/src/lua-cjson-2.1.0.tar.gz下载的lua-cjson源码包中的Makefile编译文件中指定用了LuaJIT2.0...
修复方法:
1.在脚本的Install_LuaJIT2函数里先设置一下环境变量:
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/${LUAJIT_INC_PATH}/
2.修改$download_Url/install/src/lua-cjson-2.1.0.tar.gz下载的lua-cjson源码包中的 Makefile 编译文件:
Makefile:21 Line
LUA_INCLUDE_DIR = $(PREFIX)/include/luajit-2.0 改为
LUA_INCLUDE_DIR = $(LUAJIT_INC)
调用前面添加的环境变量里的路径作为LUA_INCLUDE_DIR进行编译
这时候继续make会遇到新的 lua-cjson 编译问题
这个错误表明在编译 lua-cjson 时 luaL_setfuncs 函数的定义与 LuaJIT 的头文件中的声明冲突了
通常是因为 lua-cjson 的代码与 LuaJIT 的版本不兼容导致的
解决方法:
修改$download_Url/install/src/lua-cjson-2.1.0.tar.gz下载的lua-cjson源码包中的 lua_cjson.c 文件:
lua_cjson.c:1298 Line
static void luaL_setfuncs (lua_State *l, const luaL_Reg *reg, int nup) 部分代码
注释或删除掉
再继续编译
成功。
所以临时快速解决的话可以直接在nginx.sh的Install_cjson函数里的 cd lua-cjson-2.1.0 逻辑后加上
# 修改 Makefile
sed -i 's|$(PREFIX)/include/luajit-2.0|$(LUAJIT_INC)|g' Makefile
# 修改 lua_cjson.c 文件,注释掉 1298-1310 行
sed -i '1298,1310s/^/\/\//' lua_cjson.c
这是大佬 这是什么系统呢,大佬? 大炮运维V587 发表于 2025-1-18 15:38
这是什么系统呢,大佬?
我是Centos Stream9 这和系统没什么关系的 这是你们Linux面板编译安装Nginx的脚本 就是这个
https://download.bt.cn/install/0/nginx.sh
你把这个帖子反馈给你们的开发看看就知道我说的是什么了 顺带提一嘴 这个脚本写的乱七八糟的 还有不少问题...:( 帖子的板块选错了 可以的话帮忙移到BUG提交的Linux里面 这是Bug提交不是讨论
页:
[1]