編譯lua可執行程序


前言

lua是一個非常好用的動態語音,最適合嵌入其他程序中使用。
我已經見過很多軟件使用lua腳本讓用戶自定義想要的功能,而那些軟件為lua提供接口即可,完成高度可定制的需求。
例如大名鼎鼎的Redis就使用lua作為嵌入腳本,還有Nginx-lua,Skynet等我用過的軟件都是嵌入lua腳本。
因此編譯lua成了基本操作,完成了這個基本操作,才能進行下一步的定制。

編譯

  1. Linux只需要准備gcc環境,這個比較簡單。window可參考我這篇文章
  2. 下載lua源碼下載地址,完了使用cmd命令行窗口進入lua的src目錄。
  3. Linux下:make linux test,windos下:make mingw test,然后就可以編譯成功。
  4. 為編譯后的可執行程序添加圖標:
    准備一個lua.rc文件,在這個文件中可以定義編譯后的exe文件很多其他信息,內容如下:
id ICON "lua.ico"
1 VERSIONINFO
FILEVERSION     5,4,2,0
PRODUCTVERSION  5,4,2,0
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "080404E4"
    BEGIN
      VALUE "CompanyName", "Janbar Company"
      VALUE "FileDescription", "Janbar build lua"
      VALUE "FileVersion", "5.4.2"
      VALUE "InternalName", "lua"
      VALUE "LegalCopyright", "Janbar"
      VALUE "OriginalFilename", "lua.exe"
      VALUE "ProductName", "lua"
      VALUE "ProductVersion", "5.4.2"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x804, 1252
  END
END

准備一個lua.ico的圖片文件,我是48×48的大小。
然后修改Makefile,修改方法如下所示。

LUA_T=	lua
LUA_O=	lua.o luarc.o  # 增加luarc.o一起編譯出lua.exe
LUAC_T=	luac
LUAC_O=	luac.o luarc.o  # 增加luarc.o一起編譯出luac.exe

mingw:
	windres lua.rc -O coff -o luarc.o   #這里增加一行編譯lua.rc文件
  1. 最終編譯出來的可執行程序如下圖所示:

  1. 下圖表示編譯后的可執行程序按照lua.rc中填寫的信息展示。

總結

自己動手編譯lua可執行程序過程中雖然遇到了很多問題,但都一一解決了,最后保存編譯后的結果,美滋滋。
需要注意的是編譯后需要使用的文件有:lua.exe、luac.exe、lua54.dll
另外我研究使用lua字節碼定制功能的實例項目go_lua_c,可以參考參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM