在 Eclipse (Ubuntu 16.04) 中使用 luasocket 时出错



我正在尝试在 Ubuntu 16.04 上安装的 Eclipse Luna 中使用带有 luasocket 的 Lua 5.1。

我已经安装了Lua 5.1和LuaSocket 3.0-rc1,我可以从命令行(lua main.lua(运行这个程序:

print(_VERSION)
print("Path: "..package.path..'nCPATH: '..package.cpath)
socket = require("socket")
print(socket._VERSION)

结果是:

$ lua main.lua
Lua 5.1
Path: ./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua
CPATH: ./?.so;/usr/local/lib/lua/5.1/?.so;/usr/lib/x86_64-linux-gnu/lua/5.1/?.so;/usr/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so
LuaSocket 3.0-rc1

但是当我尝试使用安装了lua插件的eclipse运行相同的程序时,我得到这个:

Lua 5.1
Path: ;./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/media/meslin/16E65872E6585459/Users/meslin/Google Drive/workspace-desktop-ubuntu/Lua Alo Mundo/src/?.lua;/media/meslin/16E65872E6585459/Users/meslin/Google Drive/workspace-desktop-ubuntu/Lua Alo Mundo/src/?/init.lua;/media/meslin/16E65872E6585459/Users/meslin/Google Drive/workspace-desktop-ubuntu/Lua Alo Mundo/src/?.luac;/media/meslin/16E65872E6585459/Users/meslin/Google Drive/workspace-desktop-ubuntu/Lua Alo Mundo/src/?/init.luac;
CPATH: ./?.so;/usr/local/lib/lua/5.1/?.so;/usr/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so
Exception in thread "main" com.naef.jnlua.LuaRuntimeException: 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_gettop
    at com.naef.jnlua.LuaState.lua_pcall(Native Method)
    at com.naef.jnlua.LuaState.call(LuaState.java:555)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.run(JNLua51Launcher.java:128)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.main(JNLua51Launcher.java:143)

有什么想法吗?你能帮帮我吗?

谢谢亚历山大

前段时间在lua邮件列表中讨论了同样的问题,看看那里的建议是否对您有所帮助:

默认情况下,LDT 附带一个内置的 Lua VM(基于 jnLua(,因此任何人甚至不必在其机器上安装 Lua 都可以快速开始运行 Lua 脚本。我认为您设置PATH和CPATH的方式,jnLua VM本身不再可用。

您可能希望为本地本机 VM 配置"本地解释器"。您可以使用 [1] 作为参考。设置解释器后,您可以通过调整启动配置来针对此解释器而不是嵌入式 jnLua 解释器启动脚本。

最新更新