nic*_*ckb 39 lua compilation nginx luajit
如何将Lua脚本编译成单个可执行文件,同时还能获得LuaJIT的超快性能优势?
背景:
.lua组成我的Web应用程序的文件(来自模型/视图/控制器)为了简化部署,我想将运行我的Web应用程序的所有.lua脚本编译成单个可执行文件.
这可能吗?怎么样?
似乎Lua官方附带了一个名为SRLua的库
小智 83
将所有Lua源代码文件转换为目标文件并将它们放在静态库中:
for f in *.lua; do
    luajit -b $f `basename $f .lua`.o
done
ar rcus libmyluafiles.a *.o
然后使用将libmyluafiles.a库链接到主程序-Wl,--whole-archive -lmyluafiles -Wl,--no-whole-archive -Wl,-E.
此行强制链接器包含存档中的所有目标文件并导出所有符号.
例如,现在可以local foo = require("foo")在应用程序中加载名为foo.lua的文件.
有关该-b选项的详细信息可以在Running LuaJIT上找到.