.luaソースや.luaのモジュールを、C言語ソースへ変換†
LOOP Precompiler and Preloader (Lua5.1用)†
- 常時利用する.luaファイルは、別ファイルとして持っておくのではなく、
C側に取り込んでしまいたいものです。
そのような時、LOOP Precompiler and Preloaderが活躍します。
- Pre-Compilation
luaソースをluaとしてコンパイル(チャンク化)し、そのバイトコードの並びを元にC言語のソースを生成します。
一度チャンク化しますので、luaソース内にコメントなどが書かれていても影響しません。
- Pre-Loading
複数の依存した.luaファイルをコンパイルしたものを実行する際には、
どのモジュールを先に実行しなければならないか、
という問題があります。
.luaでいう
require "hogehoge"
というものを実行するためには、すでにhogehogeに相当するものがLuaステート上に存在する必要があるからです。
このような順番の問題を解決するためのツールがpreloader.luaです。
bin2c (Lua5.0~Lua5.3)†
- このツールは、Lua5.0までは同封されていたツールとなります。
luac script.lua -o script.luac
bin2c script.luac > strict_code.c
のように利用します。
luacが無い環境の場合は、Luacのページを参照してください。
- bin2cが無い場合は、
#ref(): File not found: "bin2c.lua" at page "LuaTips/download/tool"
luac.luaやbin2c.luaを使った場合のコマンドは
lua luac.lua script.lua -o script.luac
lua bin2c.lua script.luac > strict_code.c
となります。
C言語側で実行したい行で、出力されたCソース(先述の例ならstrict_code.c)をインクルードします。
|