【问题标题】:compiling lua script to standalone executable将lua脚本编译为独立的可执行文件
【发布时间】:2011-05-26 10:41:36
【问题描述】:

有没有办法从一个简单的 lua 脚本创建一个独立的可执行文件?我的意思很简单:我只是在使用 lua 5.1 提供的东西。

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

提前致谢!

【问题讨论】:

    标签: compiler-construction lua cross-compiling


    【解决方案1】:

    您可以使用chmod +x 并添加#!/usr/bin/env lua 使Lua 脚本可执行。但是你需要安装一个 Lua 解释器。如需不同的方法,请参阅我的srlua

    【讨论】:

    • 是的,我知道#!方式...但我希望有一种方法可以在未安装 lua 的系统上运行脚本。但是 srlua 的东西看起来很有趣!
    • 非常感谢,确实有帮助。
    • 这很好,我一直在尝试...但实际上并没有编译 lua 代码,而是将 lua 包裹在脚本周围...如果您打开 a.out 示例,你会看到嵌入的脚本。
    【解决方案2】:

    murgaLua 打包了一个可执行的编译器,squish 也非常适合将 lua 脚本甚至其他文件和目录树压缩到一个简单的分发文件中(尽管您仍然需要运行时来执行该文件)。

    【讨论】:

    • squish 看起来很有趣。也许我可以将它与一些编译器工具一起使用。谢谢!
    • 尽管我认为,srlua 最适合我的需求,因为我需要这个,再次感谢您的帮助。 murgaLua 似乎也是一个非常有趣的项目。
    【解决方案3】:

    我不知道有什么“开箱即用”可以为此做好准备。

    一种非常直接的方法是修改 lua 附带的 lua 解释器,以将您的自定义脚本包含在二进制文件中(并可能禁用它的交互选项)。

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

    有一个 lua2bin(如果我没记错它的名字的话)可以将一个 lua 脚本转换为一个 c 文件,你可以在你的应用程序中包含这个文件。

    【讨论】:

    • 啊,我写的时间太长了,Luiz 给了我一个相关的答案 :)
    【解决方案4】:

    尝试使用 Lua 的 bin2c,它将为您提供 lua 脚本的 C 源代码。如果您使用的是外部 lua 库,那么实现起来可能会有点困难,但 squish 可以帮助您解决这个问题。或者你可以只是 luaL_loadstring 一切

    【讨论】:

    【解决方案5】:

    LuaJIT 2.0.4 已于 2015-05-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

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 2012-12-15
      • 2011-01-03
      • 2019-10-04
      相关资源
      最近更新 更多