将Lua脚本编译为独立可执行文件

4

有没有一种方法可以从简单的Lua脚本创建独立的可执行文件?所谓简单,就是我只使用Lua 5.1提供的功能。

如果有这样的方法,是否有某种“交叉编译器”可用?我想在我的Mac OSX系统上为Linux系统创建可执行文件。

提前感谢!

5个回答

7
你可以使用 chmod +x 并添加 #!/usr/bin/env lua 来使 Lua 脚本可执行。但是你需要安装 Lua 解释器。如果想采用不同的方法,请查看我的srlua

是的,我知道 #! 的方法……但我希望能在没有安装 Lua 的系统上运行脚本的方法。不过 srlua 看起来非常有趣! - aurora
非常感谢,确实帮了我很多。 - Hedin
这很棒,我一直在尝试它...但实际上并没有编译lua代码,而是将lua包装在脚本周围...如果您打开a.out示例,您将看到嵌入的脚本。 - hagope

4

murgaLua 是一个打包单一可执行编译器的工具,而squish 可以方便地压缩 Lua 脚本甚至其他文件和目录树为一个简单易分发的文件(但你仍然需要一个运行时来执行该文件)。


Squish 看起来非常有趣。也许我可以将它与一些编译器工具一起使用。谢谢! - aurora
尽管我认为srlua最适合我目前的需求,再次感谢你的帮助。murgaLua也是一个非常有趣的项目。 - aurora

1

我不知道有没有现成的“开箱即用”解决方案。

一个相当直接的方法是修改与lua一起提供的lua解释器,将您的自定义脚本包含在二进制文件中(并可能禁用其交互选项)。

这样,您就可以使用该可执行文件启动您的脚本。

有一个名为lua2bin(如果我记得它的名称正确)的工具,可以将lua脚本转换为c文件,您可以将其包含在应用程序中。


啊,我写了太久了,而且 Luiz 已经给出了一个相关的答案 :) - Kaos

0
LuaJIT 2.0.4已于2015年5月14日发布。
(我正在基于Debian的Linux(Crunchbang)上使用它)

http://luajit.org

$ luajit -v
LuaJIT 2.0.4 -- Copyright (C) 2005-2015 Mike Pall. http://luajit.org/
$ luajit -e 'print(_VERSION)'
Lua 5.1

(将此放在脚本顶部)
#!/usr/bin/env luajit

0

尝试使用Lua的bin2c,它将为您的Lua脚本生成C源代码。如果您正在使用外部Lua库,那么可能会更难实现,但是squish可以帮助解决这个问题。或者您可以直接使用luaL_loadstring加载所有内容


1
bin2c在最近的版本中没有提供。不过,可以使用http://lua-users.org/wiki/BinToCee。 - BMitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接