*luac [#oa87ac44] **luacの疑似簡易版 [#q11b1c06] -luac.lua として保存~ #ref(http://lua.tips/download/tool/luac.lua) -使い方 --本来のluacとオプションは同じです。~ コマンドプロンプトなどで、sample.luaをコンパイルしたいのだとすると… #sh(lua){{ lua luac.lua sample.lua -o sample.out }} -補足 --lua言語で実装した、luacの疑似簡易版となります。~ 以外と知られていないことですが、luaがあれば、VMコードは出力可能なので、~ exeが無い組み込みを含め、luaが走る環境があるのであれば、Luaバイトコードを出力することが可能です。~ --Lua VMコードを表示する ''"-l"'' オプションは機能しません。(VMに興味がある人以外、使ったことは無いと思います) ~ --単純に「1つのluaファイル」を「1つのoutファイル」へとコンパイルする目的に利用出来ます。~ 本来のluacは複数のluaファイルをまとめて1つのoutファイルに出来ますが、~ この簡易版では読み込みや合成に失敗することがあります。 ~ **luac.exeやlua.exeが作れない環境でのコンパイル [#h57e4a75] -アプリケーションの組み込みluaなどの場合、luac.exeやlua.exeが自分では制作できないという場合があります。~ この場合であっても、ファイルをコンパイルしたい場合があります。~ -組み込みである限り、何らかのluaが実行可能なはずなので、そのluaファイルに、以下のように記述します。~ 下の例であれば、sample.lua がコンパイルされて、sample.lua.out というファイルが出来上がります。~ #sh(lua){{ local filename = "sample.lua" -- ここにコンパイルしたいluaファイル名を記述する。 local chunk = assert(loadfile(filename)) local out = assert(io.open(targets..".out", "wb")) out:write(string.dump(chunk)) out:close() }} **コンパイルはしない方が良い!! [#t0348c93] -元々、luacではほぼ実行速度は上昇しません。~ -一方で、バイトコードになってしまうと、異なるバージョン(5.1と5.2など)や、 異なる実装(luaとluajitなど)では、まず動作しません。~ -ですので、「どうしてもテキストを見られたくない」「複数のファイルを1つにしたい」という目的でもない限り、~ デメリットの方が大きいです。~ -以上から、特に理由がないなら、コンパイルをしない方が運用性が高くお勧めです。 **参照 [#labbbc33] -[[Lua Compiler In Lua>http://lua-users.org/wiki/LuaCompilerInLua]]