美文网首页
GNU/GCC/CLANG/LLVM

GNU/GCC/CLANG/LLVM

作者: doudo | 来源:发表于2017-09-27 17:12 被阅读71次

因为GCC的编译器已经慢慢无法满足苹果的需求,因此,苹果开发了Clang与LLVM来完全取代GCC,Xcode4之后,苹果的默认编译器已经是LLVM了。Clang作为编译器前端,LLVM作为编译器后端。

一、GNU

在1983年,理查德·斯托曼提出GNU计划,希望发展出一套完整的开放源代码操作系统来取代Unix,计划中的操作系统,名为GNU。1989年,GNU项目中的其他部份,如编辑器、编译器、shell等都已经完成,独缺操作系统核心。后来Linux成为常见的GNU计划软件运行平台。GNU计划自己的内核Hurd依然在开发中,但直到2013年为止,都还没有稳定版本发布。
总结:
GNU计划本来是为了开发一个自由系统来取代UNIX的,但是由于开发的内核hurd一直不怎么样,这个系统至今都没出稳定版本,然而GNU计划中开发的其他一些自由软件,比如GCC编译器,却非常的好,在移植到各大操作系统上一直广泛使用至今。

二、GCC

“ GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器
GCC原名为GNU C语言编译器GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理FortranPascalObjective-CJavaAda,以及Go与其他语言。
原本用C开发,后来因为LLVMClang的崛起,令GCC更快将开发语言转换为C++。
GCC通常是跨平台软件的编译器首选。GCC在所有平台上都使用同一个前端处理程序,产生一样的中介码,因此此中介码在各个其他平台上使用GCC编译,有很大的机会可得到正确无误的输出程序。
总结:
mac之前的cocoa框架便是用GCC编译的,所以ios与mac os都是默认使用的GCC编译器(现在是clang与llvm,下面会有介绍)
android的系统层因为是linux内核,自然也是GCC编译的,但是android的app因为是运行在Dalvik虚拟机,所以用的不是GCC。
windows的应用,大部分都是使用的vs系列的编译器,毕竟是windows自家的编译器,用到GCC的不多。

三、clang

“ Clang 是一个CC++Objective-CObjective-C++编程语言的编译器前端。它采用了底层虚拟机(LLVM)作为其后端。

四、llvm

先看看wiki百科上的官方说明:http://zh.wikipedia.org/wiki/LLVM
“ LLVM,它是一个编译器的基础建设,以C++写成。它是为了任意一种编程语言写成的程序,利用虚拟技术,创造出编译时期链结时期运行时期以及“闲置时期”的优化。

GCC系统庞大而笨重,而Apple大量使用的Objective-C在GCC中优先级很低。此外GCC作为一个纯粹的编译系统,与IDE配合得很差。
因为GCC的编译器已经慢慢无法满足苹果的需求,因此,苹果开发了Clang与LLVM来完全取代GCC,Xcode4之后,苹果的默认编译器已经是LLVM了。Clang作为编译器前端,LLVM作为编译器后端。
编译过程中前面的词法分析、语法分析、语义分析、生成中间代码,我们把它称之为前端处理,后面的优化和目标代码生成我们称之为后端处理。

相关文章

  • GNU/GCC/CLANG/LLVM

    因为GCC的编译器已经慢慢无法满足苹果的需求,因此,苹果开发了Clang与LLVM来完全取代GCC,Xcode4之...

  • GNU、GCC、Clang、LLVM

    1、GNU 根据维基百科:GNU是一个自由操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要...

  • gcc

    gcc & clang GCC:GNU(Gnu's Not Unix)编译器套装(GNU Compiler Co...

  • clang6.0编译环境安装

    1.clang6.0 需要 llvm 2.llvm需要gcc 4.8+ 3.gcc4.8+需要GMP 4.2+, ...

  • Clang的使用

    Clang产生的历史背景 在clang之前,苹果曾使用GCC作为OC的编译器。 GCC:GCC(GNU Compi...

  • GCC,LLVM,Clang

    在XCode中,我们经常会看到这些编译选项(如下图),有些人可能会有些茫然,本文将对GCC4.2、LLVM GCC...

  • Linux工具链

    Linux工具链通常来源于GNU project或Clang/LLVM project。其中LLVM使用BSD l...

  • bpf compile

    clang -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/9/...

  • Sublime Text 配置C语言开发环境

    需要安装的软件列表 软件 GCC TCC Clang(LLVM) Sublime 插件 AstyleFormatt...

  • C/C++ 编译器与Makefile

    gcc/g++/clang clang clang 是一个C、C++、Object-C的轻量级编译器。基于LLVM...

网友评论

      本文标题:GNU/GCC/CLANG/LLVM

      本文链接:https://www.haomeiwen.com/subject/mkbuextx.html