TCC研究(1) Tiny C Compiler最小的C语言编译器,自己编译自己
    原创
20150322 02:16:55
最近,在学习编译器技术, 研究了一下TCC 记录一下。
Tiny C Compiler(简称TCC, Tiny CC)是世界上最小的C语言编译器,而且是开源的, 小到只有约100K. (VC, GCC动不动几十M几百M, )
别看它小, 功能还是很强. 可以编译所有C99标准的ANSI C程序支持CPU包括:X86 3264, ARM,支持Windows, Linux, OSX.(跨平台跨系统的能力,比VC强)
TCC是由大牛Fabrice Bellard开发的,这位大牛还开发过 Qemu, FFMpeg (没有FFMpeg, 就没有抄它的腾讯视频,暴风影音...)一、下载TCC
主页: /tcc/
下载页: u.org/releases/tinycc/TCC最新版本是0.9.26
下载执行程序: tcc-0.9.26-win32-bin.zip  无需安装的,只需要解压即可。
解压缩到  c:\tcc ,  可见目录下有 , 这个是编译器命令行程序,没有IDE界面的
c:\tcc 加入到 系统路径中 (PATH)后,则可以在任何命令行窗口中使用了。二、使用TCC
notepad写一个测试用的c程序,如下,存盘为 hello.c
[html] view plain copy #include <stdio.h>    main() {      printf("hello,world\n");  } 
tcc编译,命令如下:
  tcc hello.c
则将生成  ,    运行看看TCC可以不编译C程序,而是把它直接运行,就像脚本解释语言那样。命令行如下:
    tcc  -run hello.c
效果:hello.c不需编译,直接运行了
这个将C程序直接运行的功能,是TCC独有的,其它C编译器都不行。三、更多例程
    tcc\examples 目录下有几个例程
 
 fib.c 是一个标准C语言例程,不多说 , 编译它:tcc fib.c
    hello_win.c 是一个Windows GUI例程, 编译它:tcc hello_win.c
 dll.c 是一个dll 例程,编译它:
  tcc -shared dll.c      //生成dll.dll文件
tiny_impdef dll.dll  // 生成dll.def文件
        tcc hello_dll.c dll.def  //hello_dll.c 是调用 dll.dll 的例程四,用TCC编译TCC
    书上一直是这样说的: C语言是自己编译自己的, 就是说C语言的编译器是用C语言写的,把编译器的源代码编译一下,就成了C语言编译器
 做一下这个实验: 用TCC编译TCC源码
 
 首先下载TCC的源码,下载页: u.org/releases/tinycc, 下载源码:tcc-0.9.26.tar.bz2
    解压缩到  c:\tcc-0.9.26
    其中的文件主要有:
    tcc.c  主程序
                libtcc.c  c语言标准库 写一个BAT批处理文件,用于处理编译过程,存盘到c:\tcc-0.9.26\build.bat, 文件内容如下:
[plain] view plain copy @echo ====TCC编译TCC====    @set /p VERSION= < VERSION  @echo>config.h #define TCC_VERSION "%VERSION%"    @echo 设置tccc语言编译器  @set CC=tcc  @set target=-DTCC_TARGET_PE -DTCC_TARGET_I386    @
echo 编译工具软件:,   @%CC% %target% win32/tools/tiny_impdef.c -o   @%CC% %target% win32/tools/tiny_libmaker.c -o     @echo 编译libtcc.dll  @if not exist libtcc\nul mkdir libtcc  @%CC% %target% -w -shared -DLIBTCC_AS_DLL -DONE_SOURCE libtcc.c -o libtcc.dll -w  @tiny_impdef libtcc.dll -o libtcc/libtcc.def    @echo 编译tc.exe  @%CC% %target% tcc.c - -ltcc -Llibtcc      @echo 编译结束, 生成文件:  tc.exe  运行c语言编译器ide代码编辑 build.bat, 结果如下

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。