Windows下用TCC编译Lua源码

标签: , , , ,

心血来潮研究了一下怎么用TCC源码编译Lua。

花了些时间阅读TCC和Lua的帮助文档,得到下面的批处理build-lua.bat:

@echo off
rem Author: Demon
rem Date: 2012/6/2
rem Website: http://demon.tw
set INSTALL_TOP=C:\Lua
set INSTALL_BIN=%INSTALL_TOP%\bin
set INSTALL_INC=%INSTALL_TOP%\include
set INSTALL_LIB=%INSTALL_TOP%\lib
if not exist %INSTALL_BIN% mkdir %INSTALL_BIN%
if not exist %INSTALL_INC% mkdir %INSTALL_INC%
if not exist %INSTALL_LIB% mkdir %INSTALL_LIB%

cd src
tcc -r -o liblua.a lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c ltm.c lundump.c lvm.c lzio.c lauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c lmathlib.c loslib.c lstrlib.c ltablib.c loadlib.c linit.c
tcc -o lua.exe liblua.a lua.c
tcc -o luac.exe liblua.a luac.c

>nul copy lua.exe  %INSTALL_BIN%
>nul copy luac.exe %INSTALL_BIN%
>nul copy liblua.a %INSTALL_LIB%
for %%i in (lua.h luaconf.h lualib.h lauxlib.h lua.hpp) do (
>nul copy %%i %INSTALL_INC%
)
%INSTALL_BIN%\lua.exe -i

将其保存到Lua源码的根目录,运行即可。批处理水平不高,写得不好的地方请不要见笑。

随机文章:

  1. VBS转EXE工具:ScriptCryptor
  2. WinDbg 6.12.2.633下载地址
  3. 用VBS实现Bencode算法
  4. VBS模拟POST上传文件
  5. VBScript编译器(VBS也疯狂)

10 条评论 发表在“Windows下用TCC编译Lua源码”上

  1. mike说道:

    额..
    tcc -r -o liblua.a l*.c
    起作用否?

    后面的貌似等同
    copy /y *.h %INSTALL_INC% & copy /y *.hpp %INSTALL_INC%

    • Demon说道:

      liblua.a不需要lua.c和luac.c,*.c包含了所有c文件。

      同样,include文件夹只需要lua.h luaconf.h lualib.h lauxlib.h lua.hpp,copy *.h会复制所有h文件。

  2. mike说道:

    楼主这个编译法好像是5.2+的?

    5.1系列源代码的INSTALL里有这么1句
    compiler: library, luac.c print.c

    5.1的话好像还缺个print.c
    tcc -o luac.exe liblua.a luac.c print.c

  3. mike说道:

    给5.1的改了一个编译脚本…

    https://gist.github.com/3312704

  4. Patrick说道:

    拜謝樓主啊

  5. mike说道:

    话说偶太蛋疼了居然写了个适应namke的makefile(tcc用)…

    https://github.com/mike2718/lua/blob/master/src/makefile.tcc

    P.S.
    LZ貌似是老乡啊,有机会出来一起吃老友肿么样~

  6. […] 很久以前写过一篇《Windows下用TCC编译Lua源码》,现在Lua已经更新到Lua 5.3.2了,想编译一个玩玩,但是发现之前的脚本是把源文件hard code进去的,对于最新版的没法用,于是改进了一下脚本。 […]

留下回复