我使用的是luajit 2.0.3
,我想在我的项目中使用luasocket,在jit
中require socket时,报错
"error loading module 'socket.core' from file '/usr/local/lib/lua/5.1/socket/core.so': /usr/local/lib/lua/5.1/socket/core.so: undefined symbol: lua_callk.
我在 debian 5.0
中用 lua5.1 编译了 luasocket 3.0
。 我搜索了很多答案,但没有一个有帮助。我在 debian 5.0 中用 lua5.1 编译了 luasocket 3.0。
请您参考如下方法:
LuaJIT 与 Lua 5.1 ABI 兼容,这意味着您可以根据标准 Lua header 编译 C 模块,然后从 Lua 或 LuaJIT 加载它。
从报错信息来看,LuaSocket 需要函数lua_callk
,但是到今天为止,LuaJIT 并没有实现这个函数。已经有人请求实现此功能以及 lua_pcallk
和 lua_yieldk
但这样做需要 LuaJIT 切换到 Lua 5.2 ABI [1]。
我建议您切换到旧版本的 LuaSocket(例如 2.0.2)或检查是否可以编译 LuaSocket 以保持 5.1 ABI 兼容性。
[1] http://www.freelists.org/post/luajit/Yielding-across-C-boundaries,3