windows下編譯lua源碼


所有的lua源碼都放在了 src 文件夾下,當然,不同的lua版本目錄結構有可能不一樣,但是都會有 src 這個文件夾,只有這個才是我們編譯必須的。而且lua越做越精簡了,5.1的版本里面還有一些test的例子之類的,5.2就只剩下必須的內容了。

然后,如果是第一次編譯lua,還是建議看一下doc文件夾下面的 readme.html。我就是通過那個才知道編譯lua必備的文件的。

通過readme,我們知道了編譯lua其實包含3部分內容:編譯lua的庫文件,編譯lua解釋器,編譯lua編譯器。

因為我的電腦上安了vc的編譯器cl,所以這3個部分可以用一個批處理文件搞定,下面我們就來寫這個批處理,說到底就是3條編譯命令罷了。

在上面那個文件夾下建一個新的build.bat文件,如下:

#生成lua的庫文件
cd src 
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c 
del lua.obj luac.obj 
link /DLL /out:lua52.dll l*.obj 
#生成解釋器
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c 
link /out:lua.exe lua.obj lua52.lib 
#生成編譯器
del lua.obj 
link /out:luac.exe l*.obj 
#刪除中間
del *.obj

pause

注意:

   1、一個是在cl編譯的時候加入了一個自定義的宏 /DLUA_BUILD_AS_DLL 這是因為在luaconf.h文件中定義了LUA_BUILD_AS_DLL宏,它控制了__declspec(dllexport)和__declspec(dllimport)的定義,必須加上這個開關才有這兩個定義,否則編譯出來的DLL沒有任何導出函數。

  2、另一個是在最后生成編譯器的時候,會發現我重新鏈接了所有的obj,而不是像生成解釋器的時候一樣,直接鏈接Lua52.lib。這是因為我這么做的時候發生了報錯,提示有部分函數找不到。暫時沒有明白是什么原因,有人說是bug,暫且不去管他。

  3、最后bat運行的時候會有報錯,  提示”cl.exe, 無法啟動此程序,因為計算機中丟失mspdb100.dll。

       因為cl.exe依賴vs的環境, 所以需要在vs的命令行模式下打開進行編譯

 

 

ps:  本文引用兩個文章:

  https://social.msdn.microsoft.com/Forums/windowshardware/zh-CN/1bbaa698-dc28-4518-a6f9-42c51e86c4a7/cl

http://blog.csdn.net/zjg555543/article/details/11814563


免責聲明!

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



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