编译 – 如何将Lua脚本编译成单个可执行文件,同时仍然获得快速的LuaJIT编译器?

我如何将我的 Lua脚本编译成单个可执行文件,同时还获得超快的性能优势 LuaJIT

背景:

>我的Lua脚本是为我创建的Web应用程序(例如主机http://example.com)
>我当前的技术栈是Nginx(web服务器),Lua / LuaJIT(检索动态内容的语言)
>我有大约50个.lua文件,组成我的Web应用程序(从模型/视图/控制器)
> FreeBSD 9操作系统

为了简单起见,在部署中,我想将所有运行我的Web应用程序的.lua脚本编译为单个可执行文件

>这是可能的,如何?

看来Lua官方带有一个SRLua的图书馆
>什么是编译我的.lua到一个单一的可执行文件的负面因素(例如性能会更糟糕等)?

解决方法

将所有Lua源代码文件转换为对象文件,并将它们放在静态库中:
for f in *.lua; do
    luajit -b $f `basename $f .lua`.o
done
ar rcus libmyluafiles.a *.o

然后将libmyluafiles.a库链接到您的主程序中使用-Wl, – 整个存档-lmyluafiles -Wl, – 无整个档案-WI,-E。

此行强制链接器包含归档中的所有对象文件,并导出所有符号。

例如,现在可以在应用程序中使用本地foo = require(“foo”)加载名为foo.lua的文件

有关-b选项的详细信息,请参阅Running LuaJIT

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...