安装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"
}
成功了