2021/02/01(月) [n年前の日記]
#1 [prog] Luaスクリプトのexe化を試してみたり
Luaスクリプトをexe化できそうかどうかを試してみたり。環境は Windows10 x64 20H2。
以下のページを参考にしつつ作業。
_天地有情 LuaスクリプトをEXE化する
以下から、Windows用のLuaをDL。
_Lua - Joe DF's Builds
exe化を試すスクリプトは以下。
hello.lua
以下で Luaスクリプトをexe化できるはずだったけど…。
出来上がった hello.exe を実行すると以下のエラーが出る。
ググったところ、「MinGW gcc 6 でビルドされた lua53.dll は LIBGCC_S_DW2-1.DLL を必要とします。」ということらしい。
_nyagos で lua53.dll のかわりに GopherLua を使おう - Qiita
前述のサイト、 _Lua - Joe DF's Builds をよくよく眺めてみたら、libgcc_s_dw2-1.dll.zip も公開されていた。DL・解凍して、libgcc_s_dw2-1.dll を入手。exeファイルと同じ場所にコピーしてみた。また、lua53.dll も一緒にコピーした。この状態なら hello.exe を実行することができた。
ちなみに、Lua 5.2.3 (lua-5.2.3_Win32_bin.zip , srlua-5.2.3_Win32_bin.zip) で試したところ、.dll をコピーしなくても hello.exe を動作させることができたように見えた。
以下のページを参考にしつつ作業。
_天地有情 LuaスクリプトをEXE化する
以下から、Windows用のLuaをDL。
_Lua - Joe DF's Builds
- lua-5.3.4_Win32_bin.zip
- srlua-5.3.4_Win32_bin.zip
- libgcc_s_dw2-1.dll.zip
exe化を試すスクリプトは以下。
hello.lua
-- sample print("Hello world!") print("Wuff Wuff Lua")
以下で Luaスクリプトをexe化できるはずだったけど…。
glue.exe C:\tools\lua\srlua.exe hello.lua hello.exe
出来上がった hello.exe を実行すると以下のエラーが出る。
> libgcc_s_dw2-1.dll が見つからないため、コードの実行を続行できません。 > プログラムを再インストールすると、この問題が解決する可能性があります。
ググったところ、「MinGW gcc 6 でビルドされた lua53.dll は LIBGCC_S_DW2-1.DLL を必要とします。」ということらしい。
_nyagos で lua53.dll のかわりに GopherLua を使おう - Qiita
前述のサイト、 _Lua - Joe DF's Builds をよくよく眺めてみたら、libgcc_s_dw2-1.dll.zip も公開されていた。DL・解凍して、libgcc_s_dw2-1.dll を入手。exeファイルと同じ場所にコピーしてみた。また、lua53.dll も一緒にコピーした。この状態なら hello.exe を実行することができた。
ちなみに、Lua 5.2.3 (lua-5.2.3_Win32_bin.zip , srlua-5.2.3_Win32_bin.zip) で試したところ、.dll をコピーしなくても hello.exe を動作させることができたように見えた。
◎ uLuaを利用してexe化。 :
ググっていたら、uLua というツール(?)を使うことでもexe化できるらしいと知った。
_uLua (REPL/インタプリタ/コンパイラ/リンカ 兼用) (utf8用) - 秀丸マクロ.net
DL・解凍して、C:\tools\lua\ に uLua.exe も置いておいた。
使い方は以下。一応メモ。
uLua を使って hello.exe を作ってみたところ、.dll のコピー等をしなくても動作するように見えた。
_uLua (REPL/インタプリタ/コンパイラ/リンカ 兼用) (utf8用) - 秀丸マクロ.net
DL・解凍して、C:\tools\lua\ に uLua.exe も置いておいた。
使い方は以下。一応メモ。
- Luaスクリプトを実行 : uLua.exe hello.lua
- Luaスクリプトをコンパイル : uLua.exe -o hello.out hello.lua -compile
- コメントを削除してコンパイル : uLua.exe -s -o hello.out hello.lua -compile
- コンパイルしたファイルを実行 : uLua.exe hello.out
- exe化 / リンカとして実行 : uLua.exe hello.lua hello.exe -link
uLua を使って hello.exe を作ってみたところ、.dll のコピー等をしなくても動作するように見えた。
[ ツッコむ ]
以上です。