Lua:编译一个包含所有依赖项的脚本

时间:2016-03-03 03:57:35

标签: c lua compilation luajit

有没有办法可以编译一个脚本,其中除标准Lua库之外的所有内容都是静态链接的?

我在我的C程序中嵌入了一个脚本,该功能在模块之间分开,然后在主模块中加载。我想将主模块编译成Lua字节码,将其转换为十六进制代码,这样就可以很容易地存储在我的程序中。问题是主模块仍然需要其他模块的源代码存在于LUA_PATH或当前目录中。有没有办法如何覆盖这种行为?当然,我可以简单地将所有文件(在编译期间自动合并)合并到一个lua源文件中,但由于我是Lua的开头,我想知道是否有其他解决方案可以解决这个问题,也许可以扩展我的视野

我在看luacluajit,但我无法让他们做我需要的事。

任何提示?

2 个答案:

答案 0 :(得分:2)

srlua这样的工具可能有所帮助。您也可以查看this presentation on luawrapthis discussion了解相关信息。

答案 1 :(得分:0)

serialise lua_state

如果你在函数和值中迭代加载的lua_state,你可以在C中创建一个as-if lua表示。

这可以序列化为lua形式,然后编译luac。 您必须忽略C绑定函数和userdata。

您需要走元数据表。

封装形式

通过更改加载器,您可以拥有一个资源,该资源按名称包含每个lua文件,并将加载请求视为搜索并读取资源。