小玩TinyCC (aka tcc)

        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



TinyCC编译器 <br>发布时间:2007-07-09 12:28 网友评论 0 条 <br>软件大小:419kb<br>软件类别:编译开发<br>点击次数:1<br>软件语言:英文<br>运行环境:Win9X,Me,NT,2000,XP,2003,Unix<br>软件评级:4<br>更新时间:2007年9月7日<br>软件作者:Fabrice Bellard<br>作者网址:Home Page <br>软件授权:免费<br>下载地址:<br><br>软件描述:在下文中,我们说 Tiny C 编译器、Tiny CC、或者 TCC 都是指的这个 Fabrice Bellard 发明的 GNU/Linux 环境下(目前已被移植到Win32环境中)最小的 ANSI C 语言编译器TCC 的主页在文后的参考资料中列出。在 Debian GNU/Linux 系统中,可以方便的用 apt-get install tcc 来从网络上安装 TCC 编译器TCC 的主页上提供有给 Red Hat 系统上使用的 RPM 软件包。在微软 Windows 环境下,可以使用 Cygwin 的模拟 UNIX 的开发环境来编译和使用 Tiny C 编译器TCC 是自由软件,软件许可证是 GNU LGPL,注意不是 GPL。 TCC 最有趣的特性是可以用 UNIX 系统上常见的 #!/usr/bin/tcc 的方式来执行 ANSI C 语言写就的源程序,省略掉了在命令行上进行编译和链接的步 骤,而可以直接运行 C 语言写就的源程序。这样就能做到像任何一种其它的脚本语言比如 Perl 或者是 Python 一样,显著的加快开发步调。可以像 TCC 直接生成经过部分优化的 X86 机器代码。并不需要生成任何虚拟机的二进制代码。据 TCC 作者提供的数据,TCC 的编译速度比 GNU C 编译器在不做任何代码优化工作(gcc -O0)的时候都要快。当然啦,要是让 GCC 做代码优化的话,那么编译速度就更加比不上 TCC 喽。 <br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值