c 编译器大全
c 编译器大全
看了下nginx的auto/cc下的目录,nginx对多种c语言的编辑器都进行了支持。才知道c语言有那么多编辑器。
编译器原理


所谓编译器,就是执行下面的三步骤:
1 将目标语言转换为AST抽象语法树
2 优化抽象语法树
3 将抽象语法树转化为适用于各个系统架构的指令集
各种编译器
acc
HP aC++ compiler, 指的是HP C/aC++ 开发者工具包中包含的编译器,特指HP C/ANSI C compiler编译器。
它主要是在惠普服务器上运行的。 HP Integrity 和 HP 9000 服务器上运行的 HP-UX 操作系统上的编译器。HP-UX 是基于System V,是Unix的一个变种。惠普服务器支持范围从入门级商业应用到大规模服务器应用, 比如SAP软件就有搭建在 HP-UX 操作系统之上的。
bcc
Borland C++ compiler,是MS-DOS 和 Microsoft Windows的编译器。Turbo C/C++的进化版
ccc
Compaq C compiler, 如其名,康柏电脑公司的C编译器,比如操作系统Tru64 UNIX就是使用这种编译器。
clang
Clang C compiler,Clang的C语言编译器。Clang是一个支持C,C++,OC,OC++四种C家族编程语言的编译器。它的目标就是为苹果提供提供基于LLVM的GNU编译套装(GCC)的替代品。我们现在的mac电脑就是使用这个编译器。
最早之前苹果的编译器完全继承UNIX,使用的是GNU编译套件,后来,编译后端(将生成的AST数优化,并且生成适用于各个系统架构的指令集合)。苹果使用LLVM将编译优化和编译后端全部统一了。但是前端还是GCC,所以有一段时间是GCC+LLVM的组合。但是后来Clang创建之后,就是使用Clang+LLVM的组合了。现在Apple的所有语言都是基于这个组合了。
gcc
GNU C compiler。GNU就是最著名的Unix的编译器了。最早的时候叫做GNU C编译器,早于1984年,每一个类Unix操作系统都需要一个C编译器来让程序员可以用高级语言C来写程序。当时没有免费的编译器,所以GNU项目从头开发了一个编译器。1987年GCC的第一个版本发布。1992年,增加了对C++语言的支持。而后,支持了更多的语言,所以GCC这个缩写由原先的GNU C Compiler变化成为了GNU Compiler Collection。
icc
Intel C++ compiler。 如名,icc是Intel的编译器团队创建出来的。主要目标当然很明显,就是为了在程序在Intel处理器下的优化。但是很多人反馈,icc在amd下的性能比较慢,而且bug很多。而且是收费的。
msvc
Microsoft Visual C++ compiler。 Microsoft Visual C++是微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++集成了便利的除错工具,特别是集成了微软Windows视窗操作系统应用程序接口(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2017。
owc
Open Watcom C compiler。这是一个加拿大公司Watcom出品的C/C++的编译器,在DOS下能够产生最佳的程序代码。很多写有些的厂商都使用Watcom C/C++来编译程序。
后来Watcom C compiler也推出了Windows平台的C/C++开发工具。
稍后Watcom C/C++被Sybase并购,成为Sybase的Optima++的前身。
sunc
Sun C compiler。就是Sun公司创建的C编译器。在Sun OS / Solaris上,Sun Pro / Sun Workshop / Sun Studio里的Sun C/C++/Fortran編譯器是主流。
参考文档
http://yuxiaopeng.com/2016/08/compiler/
http://www.vienta.me/2014/06/11/%E4%BD%A0%E6%88%96%E8%AE%B8%E5%BA%94%E8%AF%A5%E7%9F%A5%E9%81%93%E7%9A%84LLVM/
https://cxd2014.gitbooks.io/an_introduction_to_gcc/content/1_jian_jie/11_gccde_li_shi.html
https://www.zhihu.com/question/21675828
https://www.zhihu.com/question/39661628
c 编译器大全的更多相关文章
- Pascal编译器大全(非常难得)
http://www.pascaland.org/pascall.htm Some titles (french) : Compilateurs Pascal avec sources = compi ...
- DotNet 资源大全中文版,内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等
DotNet 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-dotnet 是由 quozd 发起和维护.内容包括:编译器. ...
- Sublime编译器快捷键大全
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- Python 资源大全中文版
Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...
- [转]C/C++ 程序员必须收藏的资源大全
from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...
- JavaScript资源大全中文版(Awesome最新版--转载自张果老师博客)
JavaScript资源大全中文版(Awesome最新版) 目录 前端MVC 框架和库 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 基于 Node 的 CMS 框 ...
- .Net 开源项目资源大全
伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 ...
- IntelliJ IDEA 快捷键大全
IntelliJ IDEA 快捷键大全 (2012-03-27 20:33:44) 转载▼ 标签: ide intellij快捷键 杂谈 分类: IDE工具 最近刚接触IntelliJ这个工具,用了几 ...
- Delphi 控件大全
delphi 控件大全(确实很全) delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar ...
随机推荐
- pycharm的list中copy的应用
#拷贝的意思 li = [11,22,33,44] v = li.copy() print(v) #输出结果 [11,22,33,44] #浅拷贝
- mysql查询出近一周,三个月,一年的数据
SELECT * FROM 表名 WHERE 时间字段>DATE_SUB(CURDATE(), INTERVAL YEAR) 一年 SELECT * FROM 表名 WHERE 时间字段> ...
- Ajax 的异步调用和批量修改
AJAX的异步调用的分层 有四个jsp页面,在index.jsp页面上 要在dataDiv出显示调用的的数据回显到此处,可以让showStudent2.jsp页面的数据回调到此处,$("#d ...
- 2019工作计划idea
2019.2.24 工作需求: 汇总 2008-2018年 销售订单数据; 分类历史订单数据, 并可能采取方法进行预测(预测只是一种行为不代表结果) 目前已知条件: 订单生产周期; 45天(标准天数) ...
- Linux查看端口号是否使用
netstat -lntup|grep 80 如果令命无法执行 yum install net-tools
- 如何简单地理解Python中的if __name__ == '__main__'
https://blog.csdn.net/yjk13703623757/article/details/77918633 1. 摘要 通俗的理解__name__ == '__main__':假如你叫 ...
- Hive参数的临时设置和永久性设置
Hive中有一些参数是系统给提供给用户的,我们可以通过这些参数的设置可以让Hive在不同的模式下工作,或者改变显示的效果. 1.通过set对参数值进行设定,这种设置只能是在本次会话有效,退出Hive就 ...
- R语言S3类的理解与构建
R语言类 R语言的类有S3类和S4类,S3类用的比较广,创建简单粗糙但是灵活,而S4类比较精细,具有跟C++一样严格的结构.这里我们主要讲S3类. S3类的结构 S3类内部是一个list,append ...
- HTML标题 段落 样式
HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1> 定义最大的标题.<h6> 定义最小的标题. 注释:默 ...
- QEMU KVM Libvirt手册(9): network
虚拟网卡由-net nic定义 # qemu-system-x86_64 -enable-kvm -name ubuntutest -m 2048 -hda ubuntutest.img -vnc ...