c - LuaSocket、Lua 5.2 和 Redis

标签 c sockets lua redis luasocket

有没有人能够让这些一起工作?我的 5.2 运行良好,它可以找到 lua-redis (redis.lua),但是它无法加载套接字模块,我似乎无法使用 lua(LuaSocket 版本 2.0.2)。任何人有任何提示可以使它正常工作吗?

我已经尝试制作 luasocket,但是它完全失败了,我假设这是由于我的 lua 版本 5.2。

答案只是恢复到 lua 5.1,还是有其他我不知道的修复方法?

最佳答案

与许多 Lua 库一样,当前版本的 LuaSocket 不支持 Lua 5.2。对于 Lua,版本第二位数字的变化表示主要版本,并且不保持向后兼容性(除了在某些情况下通过编译标志重新启用已弃用的功能)。

Lua 5.1 是稳定的,除非您需要 5.2 中添加的功能,否则没有特别的理由不使用它。

也就是说,许多库目前正在更新以兼容 5.2,包括 LuaSocket。如果您决心并乐于从源代码编译并调整 makefile,请尝试 this repository这是 LuaSocket 的 5.2 兼容版本。

请注意,Lua 5.2 必须使用为此版本的 LuaSocket 定义的 LUA_COMPAT_MODULE 构建才能使用它进行编译。您还需要编辑 makefile 以针对您系统上的正确路径进行调整。

再过 3-4 个月左右,我认为许多通用库将与 5.2 兼容。然而在我看来,除非它是小东西,否则我认为将项目基于 5.2 还为时过早。将代码移植到 5.2 并不难(特别是如果您熟悉 deprecated features,这样您就可以避免在 5.1 中过多地依赖它们 - 特别是 setfenv()module ()).

关于c - LuaSocket、Lua 5.2 和 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739688/

相关文章:

c - 访问数组段错误中的数据

c - 如何在访问链表中的下一个时修复段错误错误?

c - 为什么打开的文件描述符没有被重用,而是数值不断增加

c - 为什么我的套接字接口(interface)停止注册 select() 调用?

string - 想要删除Lua中括号内的字符串之间的空格

function - 在 Lua 中连接函数名称

c - sed 命令在 shell 终端下工作正常,但在 C 代码下调用 'system()' 时失败

C:结构化数据类型 - 链表

python - MRJob: socket.error: [Errno 104] 连接被对端重置

lua - Lua中奇怪的表错误