文章摘要
TCC是一个极小的C语言编译器,具有体积小、速度快的特点,支持直接编译执行C代码和动态库调用,接近ISOC99标准,包含内存安全检查功能,还能作为动态代码生成的后端。虽然作者已停止开发,但TCC仍因其轻量高效而适用于各种场景。
文章总结
TCC:微型C语言编译器
概述 TCC(Tiny C Compiler)是一款轻量级、高性能的C语言编译器,由Fabrice Bellard开发。虽然作者已不再维护该项目,但开发者仍可通过邮件列表获取最新信息。
核心特性 1. 体积小巧:x86平台可执行文件仅约100KB,包含C预处理器、编译器、汇编器和链接器,适合救援盘等空间受限环境 2. 编译迅速:直接生成x86代码,无字节码开销。经测试编译Links Browser项目(76,936行代码)时,速度比GCC 3.2快9倍 3. 功能全面:支持直接调用C动态库,兼容ISOC99标准,可自编译 4. 安全增强:提供可选的内存边界检查功能 5. 便捷使用:支持直接编译执行C源码(无需单独链接/汇编),内置完整C预处理器和类GNU汇编器 6. 脚本支持:通过添加"#!/usr/local/bin/tcc -run"头注释,可直接执行C脚本 7. 动态编译:通过libtcc库支持动态代码生成
性能数据(2.4GHz Pentium 4测试): - TinyCC 0.9.22:2.27秒,859,000行/秒,29.6MB/秒 - GCC 3.2 -O0:20.0秒,98,000行/秒,3.4MB/秒
资源 - 下载地址:GNU Savannah仓库 - 文档:提供在线文档 - 邮件列表:开发者交流社区 - 许可证:GNU LGPL协议
(注:原文中大量重复的URL链接和已失效的测试报告链接已作精简处理,保留核心功能描述和关键性能数据)
评论总结
以下是评论内容的总结:
对TCC的怀念与现状
- 用户感慨TCC已停止维护多年,但仍对其轻量级特性表示赞赏
- "Even in the era of terabyte NVMe drives my eyes water when I install MSVC"(rustyhancock)
- "Sad but not surprised to see it's no longer maintained"(rustyhancock)
活跃的分支与镜像
- 多个用户指出存在维护中的分支,支持RISC-V等新特性
- "There is an actively maintained fork with RISC-V support"(haunter)
- "unofficial mirror which has updates"(pbohun)
教育与应用场景
- 有用户提到大学课程强制使用TCC,也有开发者用于语言项目
- "required to use for my courses...GCC was forbidden"(throwatdem12311)
- "do fast native-code generation for language projects"(olivia-banks)
技术特点与挑战
- 代码存在特殊实现细节,编译难度较大
- "switch statement with an post-increment operator"(fjfaase)
- "uses the ## operator where the result is the name of a macro"(fjfaase)
相关资源与扩展
- 提及更小的C编译器(512字节)和Guix引导项目
- "fits within the 512 bytes"(senfiaj)
- "Used in the impressive Guix bootstrap"(gnufx)
幽默与误认
- 用户调侃AI生成编译器的梗,也有混淆TCC与LCC的情况
- "The Latest AI just zero-shotted an entire C compiler"(kimixa)
- "mixed it up with LCC which was used in Quake 3"(markus_zhang)
开发建议
- 有用户询问编译器开发入门资源
- "good resource for getting started writing a compiler?"(imwally)