每次我编译c语言文件时,都会不自主地比较c语言源文件和可执行程序的大小。但是现在的mingw编译器似乎都不太给力,一个简单的helloworld也要50kb起步,vs又装不起来。。我知道这些大多是头文件,但无可奈何,没它不能用。
我觉得年代早一点,存储设备紧张,编译器都会精打细算。但是,我淘到了远古版本的gcc,第一次测试,一点改进都没有,后来发现是老版的gcc入口文件去找新版的mingw编译。调整之后文件小多了。我感觉不错。
但是,我又找到了一个更小的编译器。
这东西叫做TinyCcompiler
下载链接在这http://download.savannah.gnu.org/releases/tinycc/
一看,最老旧的比我年纪都大。
这么一编译,震惊到了,2kb。
介绍
据网络,似乎这个软件的作者是个大神,还出品过ffmpeg。但我无法考证。
这个tiny不但编译出的文件小,编译器本身也小,100k
这个压缩包最主要的是tcc.exe。
在介绍中说-run可以不编译直接执行c代码,但我没想到用处。
大体和gcc操作流程一样。
因为它就是个编译器,该有的都有,该没有的都没有(我指的是图形界面)
测试
代码如下
#include <stdio.h>
#include <math.h>
int main() {
float term, result = 1;
int n;
for (n = 2; n <= 100; n += 2) {
term = (float)(n * n) / ((n - 1) * (n + 1));
result *= term;
}
printf("pi %f\n", 2 * result);
return 0;
}
这个是一个使用级数法计算pi的程序,效果很差
但这不影响比较
新版gcc | 77,736B |
老版gcc | 15,122B |
Tcc | 1,536B |
当然,均可运行。
我想测试大文件,但因为年代久远,标准什么的,始终找不到可以让两者同时正常运行的长代码。
TCC有点死脑筋,稍微有点不合规范,可不会帮你纠正,直接不让编译,gcc会稍微好一点
总结
对于需要控制文件大小的时候,TCC是一个很好的选择,但是因为制作出来比较早,不太适合大型项目的编译首选。不知什么时候就会有兼容性问题。
环境
win7,不要看到我用gcc就以为是Linux。