Tiny C Compiler(缩写为TCC、tCc或TinyCC)是一个用于x86(16/32位)或x86-64(64位)系统的C编译器,开发者为Fabrice Bellard。软件是设计用于低级计算机环境,或是于磁盘容量有限的空间中(1.44磁片或是硬盘)。软件可以适用于WindowsLinuxUnix操作系统,而最新版本为0.9.27(2017年12月17日)。TCC是在GNU宽通用公共许可证(LGPL)协议规范下发布。

TCC符合ANSI C(C89/C90)规范[1]亦符合新版的ISO C99标准规范,与GNU C扩展的内嵌汇编语言(即inline assembler)功能汇编语言

Tiny C Compiler
开发者 Fabrice Bellard
稳定版本 0.9.27

(2017年12月17日,​21个月前)
源代码库

编程语言 C语言汇编语言
操作系统 LinuxUnixWindows
类型 C语言编译器
许可协议 GNU宽通用公共许可证
网站 http://bellard.org/tcc/

更新项目[编辑]

  • 支持C99 VLA规范
  • 可产生make的dependencies(-MD/-MF)
  • 支持多种平台的程序编写,例:x86-64ARMOSXWinCEkFreeBSDHurd
  • 修正一些已知的bug

特色功能[编辑]

TCC与其他C语言编译器的不同处在于:

  • 容量小,软件大小约为1MB左右,可存储于1.44MB的磁盘片中使用。
  • 速度快,以TCC开发的程序可执行于x86(16/32位)与 x86-64(64位)环境中,据开发者说,运行比GCC较来得相当快速。[2]程序亦可以包含汇编语言inline assembler)于其中运行与编译。
  • 无限制,其他C语言的动态Library祗要符合ISO C99规范,皆可以给予TCC来使用与编译。
  • 安全性,TCC包含一个可选的memory(存储器)和boundschecker(程序检测器),经过检测的代码可以随意地混合于标准代码内。
  • 其他,TCC为命令行式的使用,当前并无集成性开发环境,但可以配合其他的编辑软件使用(如:UltraEdit ...等)。

新版本特色[编辑]

  • 0.9.27版本取消了原有的”tiny_impdef.exe”(产生DLL文件)与”tiny_libmaker.exe”。
  • 在64位版本中提供可编译32位的编译器i386-win32-tcc.exe,而在32位版本中则提供64位的编译器x86_64-win32-tcc.exe,使用方式相同于tcc的指令。
  • 原编译DLL功能,则以指令方式合并到tcc内,以tcc -impdef *.dll方式来使用

用途[编辑]

著名的 TCC 应用包括:

  • TCCBOOT[3],一个可以在大约 10 秒内从源码启动 Linux内核引导程序。该引导程序可以从硬盘中读取 Linux 源代码,将可执行指令写入内存并执行。
  • TCC 曾被用于演示对软件后门的防御。 [4]
  • TCC 曾被用于编译 GCC,虽然需要不少补丁才能完成这个操作。
  • Cinpy[5],一个允许在Python模块中添加C函数的库。这些 C 函数在运行时使用 TCC 编译,然后通过 ctypes 库在 Python 代码中调用。
  • 被安装在 JSLinux[6] ,一个能在浏览器中运行 Linux 和其它操作系统的虚拟机(也是由 Bellard 开发的)。
  • 被用于编译超微型国际象棋引擎。[7]
  • TCC 曾被内置于 Google Android 系统,于 Andriod 2.0 版本中。[8][9]

开发历史[编辑]

TCC 项目起源于 OTCC (Obfuscated TCC,即代码混淆过的 TCC),这是 Bellard 为赢得 2001 年国际C语言混乱代码大赛(IOCCC)编写的一个程序。其后,Bellard 反混淆并延伸发展了该程序,于是有了 TCC。[10]

在 2012 年 2 月 4 日之前的某个时间, Bellard 在 TCC 的官方网站上宣布他不再参与 TCC 的维护工作。[11]

自从 Bellard 离开 TCC 项目以来,已经有不少组织和个人分发补丁或创建维护分支,为 TCC 提供构建支持以及问题修复。

参考文献[编辑]

引用[编辑]

来源[编辑]

外部链接[编辑]

参见[编辑]

维基教科书中的相关电子教程:TCC使用指南

Tiny C Compiler简介-wiki的更多相关文章

  1. Tiny PXE Server简介

    Tiny PXE Server简介Tiny PXE Server是一款小巧而功能强大的网启软件.支持DHCP TFTP HTTP BINL DNS等多个协议,支持grub4dos,pxelinux,i ...

  2. Tiny C Compiler(Tcc)

    catalog . Tcc introduction . Tcc安装配置 . Tcc Programing 1.  Tcc introduction TCC基本和GCC兼容 . 符合ANSI C(C8 ...

  3. Retrofit 简介 wiki 文档

    简介 Type-safe HTTP client for Android and Java by Square, Inc. GitHub主页:https://github.com/square/ret ...

  4. Graph-tool简介 - wiki

    graph-tool is a Python module for manipulation and statistical analysis of graphs[disambiguation nee ...

  5. TCC(Tiny C Compiler)介绍

    TCC是一个超小.超快的标准C语言编译器.她可以从这里(http://bellard.org/tcc/)下载到:注意,要下载http://download.savannah.nongnu.org/re ...

  6. TCC : Tiny C Compiler (2018-2-6)

    饭墙下载,有缘上传: https://files.cnblogs.com/files/bhfdz/tcc-0.9.27-win32-bin.zip https://files.cnblogs.com/ ...

  7. Wiki知识介绍

    Wiki简介 Wiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”的意思,被译为“维基”或“维客”.一种多人协作的写作工具.Wiki站点可以有多人(甚至任何访问者)维护, ...

  8. 如何基于TencentOS tiny,快速打造属于自己的IoT小应用?

    导语 | 近日,云+社区技术沙龙“腾讯开源技术”圆满落幕.本次沙龙邀请了多位腾讯技术专家,围绕腾讯开源与众多开发者进行探讨,深度揭秘了腾讯开源项目TencentOS tiny.TubeMQ.Kona  ...

  9. C#之父 Anders Hejlsberg

             Anders Hejlsberg (born December 1960)[2] is a prominent Danish software engineer who co-des ...

随机推荐

  1. 手写简化版SpringBoot

    Springboot项目全部依赖注解的,web工程是如何启动的 1 首先引入了Tomcat依赖,然后用java代码启动Tomcat容器,默认Tomcat版本是8.5版本 2 Tomcat是实现了ser ...

  2. 【转帖】编译-O 选项对性能提升作用

    编译-O 选项对性能提升作用 https://www.cnblogs.com/pigerhan/p/3526889.html GCC -O 选项 这个选项控制所有的优化等级.使用优化选项会使编译过程耗 ...

  3. 【转帖】处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU?

    处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU? https://www.eefocus.com/mcu-dsp/371324 2016-10-28 10:28 作者:付丽华预计 9 ...

  4. Apache Kafka Producer For Beginners

    在我们上一篇Kafka教程中,我们讨论了Kafka Cluster.今天,我们将通过示例讨论Kafka Producer.此外,我们将看到KafkaProducer API和Producer API. ...

  5. Spring笔记4

    Spring中的JdbcTemplate JdbcTemplate:他是spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装. JdbcTemplate的作用:用于和数据库交互的, ...

  6. 分布式全文搜索引擎(ElasticSearch)

    1. ElasticSearch介绍(简称ES) ES即为了解决原生Lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案. 首先,ES的索引库管理支持依然是基于Ap ...

  7. BBR 安装

    谷歌云申请搭建翻墙 1.申请谷歌账号 2.申请免费一年谷歌云使用 https://console.cloud.google.com/ 3.设置客户端 xshell/ putty ssh客户端设置 vi ...

  8. Java date日期类型,结束日期减去开始日期求两者时间差,精确到秒

    /** * @Author: * @Description: * @Date: 2019/4/10 19:01 * @Modified By: */ @Slf4j public class DateU ...

  9. logback 生成 catalina.base_IS_UNDEFINED 问题处理 &如何在eclipse/idea中添加VM参数

    1>在Eclipse中里设置  windows->preferences->Java->Installed JRES->edit->Default VM Argum ...

  10. CLASSPATH 环境变量设置

    当 JVM 运行时,如果设置了 CLASSPATH 变量,那么 JVM 会到该目录下寻找 java 类文件 该变量配置的方式不同,寻找顺序也不同 在我的 D:\tmp\java\quickstart\ ...