我正在使用luajit 2.0.3,我想在myproject中使用luasocket。在jit中需要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.

我用lua5.1在luasocket 3.0中编译了debian 5.0
我搜索了很多答案,但没有一个帮助。我用lua5.1在debian 5.0中编译了luasocket 3.0。

最佳答案

LuaJIT与Lua 5.1兼容ABI,这意味着您可以针对标准Lua头文件编译C模块,并从Lua或LuaJIT加载它。

从错误消息来看,LuaSocket需要函数lua_callk,但是,就目前而言,该功能尚未在LuaJIT中实现。有人要求实现此功能以及lua_pcallklua_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

关于luajit - luasocket 3.0, undefined symbol :lua_callk,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22840437/

10-16 17:07