日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

windows下编译lua源码

發(fā)布時間:2025/6/15 windows 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows下编译lua源码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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


因為之前一直使用 lua for windows 來搭建lua的使用環(huán)境,但是最新的 lua for windows 還沒有l(wèi)ua5.2,我又想用這個版本的lua,所以被逼無奈只能自己編一下lua源碼。

首先從 lua的官網(wǎng) 下載你想要使用的lua源碼,比如我下載的就是lua5.2。解壓后內(nèi)容如下:

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

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

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

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

在readme里面已經(jīng)提到了這3個部分需要的內(nèi)容,如下圖:

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

然后開始寫這個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

  • cd ..

  • 這樣就可以在src目錄下生成lua52.dll了。注意到我去掉了lua.obj和luac.obj,因為根據(jù)readme這兩個文件不是必須的。

    然后再生成一個解釋器,接著在上面的代碼里面加2行:

  • 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

  • link /out:lua.exe lua.obj lua52.lib

  • cd ..

  • 其實就是重新編譯lua.c,然后鏈接生成的lua52.lib就OK了。

    最后生成編譯器,繼續(xù)加2行,并添加編譯luac.c:

  • 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

  • cd ..

  • 這樣,運行這個批處理就可以在src目錄下生成所需的lua庫lua52.dll以及解釋器lua.exe和編譯器luac.exe了。

    當然,如果你雙擊這個批處理,黑框一閃而過,然后發(fā)現(xiàn)src下什么都沒有生成,那是因為你的vc編譯器cl沒有被你放入windows系統(tǒng)環(huán)境中,這樣的話你就只能通過vs或者是vc的命令處理器來運行這個批處理了或者把你的vs安裝目錄放到系統(tǒng)環(huán)境中去,比如在我的電腦上是這個路徑:D:\Program Files\Visual Studio 2005\VC\bin。別問我怎么放到系統(tǒng)環(huán)境中去,百度吧少年。

    好人做到底,貼出用vs命令處理器編譯需要干的事情:

    然后進入到mylua.bat的目錄,接著直接運行這個批處理就OK了。簡單吧。

    因為打開了3級警告開關(guān),所以有很多警告,可以去不理睬。結(jié)果如下:

    最后上傳這個bat文件。

    整個編譯過程都OK,提兩點:

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

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


    轉(zhuǎn)載于:https://blog.51cto.com/sunzeduo/1306162

    總結(jié)

    以上是生活随笔為你收集整理的windows下编译lua源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。