小玩TinyCC (aka tcc)

原创 2012年03月11日 19:25:37

        tcc是一个轻量级的C语言编译器,根据官方介绍,完全支持ANSI C,甚至可以用它来编译linux内核。tcc最显著的特点就是编译速度快,产生的可执行程序小,并且能够像脚本一样执行C代码。可惜的是作者现在貌似不再开发tcc了,目前最新版本是0.9.25。

 

        tcc的使用方法和gcc基本相同,连默认产生的可执行程序的名字都叫a.out。写个hello world,比较下gcc和tcc产生的可执行程序的大小。

hello.c

#include <stdio.h>

int main(void)
{
    printf("hello world.\n");
    return 0;
}

        gcc hello.c -o g

        tcc hello.c -o t

结果:


可以看到gcc产生可执行程序大小是tcc的近3倍,难道gcc产生的可执行程序里包含了大量的调试符号信息等?那我们利用strip对g和t分别进行一次瘦身处理,再看看大小。


奇怪tcc编译出来的t文件,strip居然不能对其瘦身,报出Bad value的错误。不管怎么样,即使g瘦身后,大小还是t的两倍多,可以看出来tcc编译的可执行程序的大小确实有一定的优势,这优势在嵌入式设备更能体现出来。二进制代码越少,执行的速度也许会更快哦,但这个需要实际测试才知道了。


         再试试利用tcc对C代码进行脚本化运行,同样使用上面的hello.c程序。tcc可以不编译源码为可执行程序,而直接运行c代码,方式如下:

          tcc -run hello.c

同样会输出hello world字样,但却没有产生一些中间文件,如: hello.o,a.out等。就像脚本一样在运行。你可能会认为要是能够直接执行hello.c文件就好了,就和shell脚本一样,很高兴的告诉你,tcc可以这么干。

#!/usr/bin/tcc -run
#include <stdio.h>

int main(void)
{
    printf("hello world.\n");
    return 0;
}


只需要在源文件头部加上"#!/usr/bin/tcc -run",然后将源文件加上可执行的权限,在像使用普通命令一样./hello.c运行,hello world.结果就出来了。

         可能你还觉得hello.c文件虽然可以直接运行了,可毕竟有一个.c的后缀。其实,你完全可以mv hello.c hello去掉后缀,一样的可以运行,这个时候长得更像一个ELF格式的可执行文件了。此时,tcc已经帮你完成了用C语言进行脚本化编程的梦想了。

        真利用tcc来脚本化编写C代码,绝对有装B的嫌疑。但如果是编写一段不大的程序,需要反复的修改调试,那么利用tcc直接执行就方便多了,就不需要反反复复的编译,链接过程了。

        不过,tcc的优势主要还是体现在快速编译上,毕竟稍大一点的工程,gcc就需要编译好一会,有个笑话表达的是“程序员怎么那么闲?因为正在编译”。至于tcc生成的可执行程序的效率如何,还需要动用一个大点的项目来测试一下才知道了。


tcc的详细文档: http://bellard.org/tcc/tcc-doc.html



恶斗TCC(Tiny C Compiler)

     TCC,全称Tiny C Compiler(http://bellard.org/tcc/),是一个颇具特色的C编译器,你能把它当作一个C语言解释器来用,也可以嵌入你自己的应用程序作一个动态...
  • soloist
  • soloist
  • 2009-07-12 17:35:00
  • 19761

TCC和LuaTCC安装使用

一、TINY-C COMPILE(TCC)安装使用 download:  http://bellard.org/tcc/ 二、下载luatcc download: http://luat...
  • trust_lyj
  • trust_lyj
  • 2013-06-08 17:20:01
  • 249

[转]将tcc 载入工程 编译脚本

原文地址:http://blog.csdn.net/nondeep/article/details/8498430 tiny cc 编译器 tcc是一个支持windows和linux环境的...
  • xian_wwq
  • xian_wwq
  • 2015-11-24 15:07:58
  • 769

Tiny CC

  • 2008年05月16日 20:49
  • 274KB
  • 下载

TCC(Tiny C Compiler)0.9.26源码 VS版工程(要分版)

  • 2015年02月01日 13:00
  • 543KB
  • 下载

lua使用 tinycc

1.下载tinycc http://bellard.org/tcc/ http://repo.or.cz/w/tinycc.git  最新的 2.编译tcc 需要mingw ...
  • lqk1985
  • lqk1985
  • 2012-04-20 15:39:05
  • 8493

TCC(Tiny C Compiler)0.9.26源码 VS版工程

  • 2015年02月01日 12:52
  • 398KB
  • 下载

深入理解C语言-09 编译器介绍

介绍小型C语言编译器 TinyCC
  • zlf_jack
  • zlf_jack
  • 2014-03-23 12:32:47
  • 1328

TCC研究(1): Tiny C Compiler最小的C语言编译器,自己编译自己

Tiny C Compiler(简称TCC, 或Tiny CC)是世界上最小的C语言编译器. 第一课: 安装,试用, 用TCC编译自己...
  • c80486
  • c80486
  • 2015-03-22 02:16:55
  • 9558

TCC文件解析

# tcc file version // TCC文件版本设置,不需要管他 ,保持不变即可 # mode configuration // 模式设置 // 是否继承使用K值ASS文件头部信息...
  • Naruto_Hinata_
  • Naruto_Hinata_
  • 2017-03-21 00:00:51
  • 529
收藏助手
不良信息举报
您举报文章:小玩TinyCC (aka tcc)
举报原因:
原因补充:

(最多只允许输入30个字)