lua cjson 解决_luaL_setfuncs

安装lua 的cjson的时候遇到了以下的问题,只是截取了重要的部分

dlopen(/usr/local/lib/lua/5.2/cjson.so, 6): Symbol not found: _luaL_setfuncs

在网上查了很多很多。基本都说lua5.2不能用,改为安装openresty吧,openresty的功能多还没有问题等等。。。

我是一个用什么就安装什么的家伙,openresty虽然强,但是公司的服务只安装了lua5.2与luajit2.0.4。只因为一个功能就要重新部署服务器上的环境,这显而不现实。

于在苦逼的开始了网搜… 此处略过N名吐槽,还没有解决。最后发现cjson的Makefile文件中

LUA_VERSION =       5.1
TARGET =            cjson.so
PREFIX =            /usr/local
#CFLAGS =            -g -Wall -pedantic -fno-inline
CFLAGS =            -O3 -Wall -pedantic -DNDEBUG
CJSON_CFLAGS =      -fpic
CJSON_LDFLAGS =     -shared
LUA_INCLUDE_DIR =   $(PREFIX)/include
LUA_CMODULE_DIR =   $(PREFIX)/lib/lua/$(LUA_VERSION)
LUA_MODULE_DIR =    $(PREFIX)/share/lua/$(LUA_VERSION)
LUA_BIN_DIR =       $(PREFIX)/bin

这里面的参数与我自己的不太符合

LUA_VERSION =       5.2
TARGET =            cjson.so
PREFIX =            /usr/local/share/lua/5.2
#CFLAGS =            -g -Wall -pedantic -fno-inline
CFLAGS =            -O3 -Wall -pedantic -DNDEBUG
CJSON_CFLAGS =      -fpic
CJSON_LDFLAGS =     -bundle -undefined dynamic_lookup
LUA_INCLUDE_DIR =   /usr/local/Cellar/luajit/2.0.4/include/luajit-2.0 //指定到luajit中
LUA_CMODULE_DIR =   $(PREFIX)
LUA_MODULE_DIR =    $(PREFIX)
LUA_BIN_DIR =       $(PREFIX)/luarocks

重新make 成功了哈哈

把 cjson.so 放到我的公共库中,require “cjson” , 运行

{
    data: {
        视频转码服务v1.0.1 2015-11-11.docx: "1449027685.docx"
    },
    code: 10000,
    message: "ok"
}

成功了

你可能感兴趣的:(server)