本身編譯lua5.2.1

官方發佈庫仍是5.1.4的,並且因爲失誤致使必須帶着2個dll文件。最新的源代碼是5.2.1的,咱們本身編譯吧,目標是靜態庫,省得帶着 dll 滿世界跑。 函數

下載源代碼:http://www.lua.org/ftp/lua-5.2.1.tar.gz lua

解壓備用。這裏說句題外話,lauxlib.h 和 lauxlib.c 我認爲也應該是官方的失誤,本意應該是 luaxlib.h 和 luaxlib.c 吧? spa

新建一個 static library 工程,把解壓獲得的目錄下的src子目錄中的全部.h和.c文件拷貝到新工程目錄下。 指針

工程中刪除自動生成的 main.c 文件,添加進除lua.c、luac.c和lua.hpp的全部.h和.c文件。 get

編譯,獲得 libLua.a 便是庫。注意,若是你沒有重設過輸出目錄,這個 liblua.a 文件應該在你的源代碼目錄裏。 編譯器

而後把 libLua.a 放到編譯器的 Lib 目錄下,把  lauxlib.h、lua.h、luaconf.h、lualib.h 放到編譯器的 include 目錄下(C++用戶再添加個 lua.hpp),最好新建個 lua 子目錄存放頭文件更清晰。 編譯


其實最關鍵就是除開沒必要要的文件,實際上:
編譯 lua(lua.exe,解析器) 時刪除luac.c,加入lua.c。
編譯 luac(luac.exe,字節碼編譯器)時刪除lua.c,加入luac.c。
編譯 lib和dll(liblua.a和lua.dll,庫)時把lua.c和luac.c都刪除。 ftp


另外要注意:lua 5.2.1 建立一個指向Lua解釋器的指針的函數 lua_open 修改爲 luaL_newstate。
即把工程從lua5.1庫轉到5.2庫時,在調用 lua_open() 的地方都須要修改爲 luaL_newstate()。 下載

相關文章
相關標籤/搜索