**luacの簡易版 [#ja2c9414]
- #ref(http://lua.tips/download/tool/luac.lua)
*luac [#oa87ac44]

**使い方 [#ec9beb7e]
-コマンドプロンプトなどで、sample.luaをコンパイルしたいのだとすると…
**luacの疑似簡易版 [#q11b1c06]
-luac.lua として保存~
#ref(http://lua.tips/download/tool/luac.lua)

-使い方
--本来のluacとオプションは同じです。~
コマンドプロンプトなどで、sample.luaをコンパイルしたいのだとすると…
#sh(lua){{
lua luac.lua sample.lua
lua luac.lua sample.lua -o sample.out
}}

-luaで実装した、luacの簡易版となります。~
-補足
--lua言語で実装した、luacの疑似簡易版となります。~
以外と知られていないことですが、luaがあれば、VMコードは出力可能なので、~
組み込みを含め、走る環境があるのであれば、Luaバイトコードを出力することが可能です。|
-Lua VMコードを表示する ''"-l"'' オプションは機能しません。 (VMに興味がある人以外、必要ないはずです)
-単純に1つのluaファイルを1つのoutファイルへとコンパイルする目的に利用出来ます。~
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が自分では制作できないという場合があります。~
この場合であっても、ファイルをコンパイルしたい場合があります。~

**コンパイルはしない方が良い!! [#j44fbc15]
-luacではほぼ実行は上昇しません。~
一方で、バイトコードになってしまうと、異なるLuaインタプリタ実装間では
動作しません。~
ですので、「中を直接テキストで覗かれたくはない」「複数のファイルを1つにしたい」~
という目的以外ではデメリットの方が大きいです。~
特に理由なく、コンパイルをしない方がお勧めです。
-組み込みである限り、何らかの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つにしたい」という目的でもない限り、~
デメリットの方が大きいです。~

**参照 [#q7d18f51]
-以上から、特に理由がないなら、コンパイルをしない方が運用性が高くお勧めです。

**参照 [#labbbc33]
-[[Lua Compiler In Lua>http://lua-users.org/wiki/LuaCompilerInLua]]


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS