How can I compile my Lua scripts into a single executable file, while also gaining the super fast performance benefits of LuaJIT?
Background:
.lua
files that make up my web application (from Models/Views/Controllers)For simplicity sake in deployment, I'd like to compile down all of my .lua scripts that run my web application down to a single executable.
Is this possible and how?
It appears that Lua official comes with a library called SRLua
Translate all of the Lua source code files to object files and put them in a static library:
for f in *.lua; do
luajit -b $f `basename $f .lua`.o
done
ar rcus libmyluafiles.a *.o
Then link the libmyluafiles.a
library into your main program using -Wl,--whole-archive -lmyluafiles -Wl,--no-whole-archive -Wl,-E
.
This line forces the linker to include all object files from the archive and to export all symbols.
For example, a file named foo.lua can now be loaded with local foo = require("foo")
from within your application.
Details about the -b
option can be found on Running LuaJIT.