`

LLVM与GCC之间的关系

 
阅读更多

 

 

请问LLVM与GCC之间的关系,网上说LLVM 是编译器的架构,在这个架构上可以搭建多个小编译器(类似C、C++/JAVA/),不知理解的对不对,还请高手补充?

xcode用的编译器应该是LLVM,他和GCC是什么关系,我调试用的时候底层掉的是gdb,费解

LLVM本身并不是编译器,只是一套用于开发编译器、解释器等程序语言相关工具的库,主要聚焦于编译器后端功能,如代码生成、代码优化、JIT等。

所 以说“XCode用的编译器是应该是LLVM”是不对的。XCode用的编译器是Clang。Clang是一个基于LLVM开发的C/C++/Obj-C 编译器,有一套独立的前端,后端直接采用LLVM。还有一个较为早期的相关项目LLVM-GCC,是一个将GCC的前端嫁接到LLVM之上拼接而成的一个 完整的编译器。

Clang自2.8版本起已经可以完整编译Boost了,可以说是Clang成为成熟C++编译器的一个标志。但当时Clang还没有调试器可用,只有一个尚未完成的只支持MacOS平台的LLDB(lldb.llvm.org/)。后来不知道是GDB支持了LLVM还是LLVM支持了GDB,总之Clang 3.0的编译产物已经可以用GDB调试了。

苹果之所以资助LLVM,主要原因在于GCC采用GPL协议而LLVM采用BSD协议。另外GCC官方对苹果提出的需求响应不及时,促使苹果急于寻求GCC的替代品。

分享到:
评论

相关推荐

    llvm写编译后端

    llvm-gcc前端基于GCC,支持多种语言,如Java、Ada、FORTRAN、C、C++和Objective-C。它会将GCC的中间表示GENERIC转换为LLVM形式,而不是GCC的GIMPLE。llvm-gcc已相对成熟,但对于非原生目标,需要一个交叉编译器。...

    winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt

    标签“c++ c”进一步确认了这个工具链与C++和C语言的紧密关系。在软件开发中,这两种语言广泛用于系统级编程、游戏开发、高性能计算等领域,而编译器则是开发者将源代码转化为可执行程序的关键工具。 在压缩包的...

    winlibs-i686-posix-dwarf-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip

    标题中的"winlibs-i686-posix-dwarf-gcc-10.2.0-llvm-11.0.0-mingw-w64-8.0.0-r5.zip"表明这是一个针对Windows 32位平台的编译器工具链压缩包,其中包含了多个关键组件。首先,`i686`是指英特尔32位架构,说明这是为...

    joos-compiler:CS 444 的编译器项目 - 这个编译器就像 llvm 和 gcc 以及人类已知的所有其他编译器的婴儿(对于 joos)

    这个项目借鉴了知名的编译器如LLVM和GCC的设计思想,但主要针对Joos语言进行编译,可以视为一个小型化的、简化版的编译器。在本文中,我们将深入探讨编译器的基本概念、编译过程以及与C++的关系。 编译器是计算机...

    winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip

    winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14.0.3-mingw-w64msvcrt-10.0.0-r3.zip

    LLVM-14.0.5-win64

    1. **Clang**:这是LLVM的C、C++和Objective-C前端,它提供了与GCC类似的编译器功能,但通常具有更快的编译速度和更好的错误消息。 2. **LLVM IR (Intermediate Representation)**:这是一种高级的中间表示,用于...

    STL源码(sgi、llvm、g++)

    G++ STL与LLVM STL类似,也支持C++11及以后的标准,但可能在某些细节和实现策略上有所不同。G++ STL通常会针对GCC编译器进行优化,以获得更好的性能和兼容性。 在深入研究STL源码时,我们可以关注以下几个核心概念...

    LLVM Introduction

    Clang的主要目标是提供与GCC相当的编译质量,同时在性能上有所提升,并且在用户体验上提供更好的反馈。 LLVM项目的愿景和方法论是建立一套模块化的编译器组件,这样可以降低构建特定编译器的时间和成本,不同的...

    LLVM框架学习 Getting Started with LLVM Core Libraries

    DragonEgg 是一个 GCC 插件,它将 GCC 的前端输出转换为 LLVM IR,从而允许使用 LLVM 后端进行优化和代码生成。通过 DragonEgg,开发者可以在保持对 GCC 工具链的兼容性的同时,利用 LLVM 的优势。LLVM 测试套件包含...

    Getting Strated with LLVM Core Libraries

    值得一提的是,LLVM社区非常活跃,书中可能还会介绍如何与LLVM社区合作,例如如何报告bug、提出补丁和参与讨论。LLVM作为一个开源项目,有一个庞大且支持性的社区,对于希望贡献代码或报告问题的开发者来说,理解和...

    ck-dev-compilers:集体知识软件包,用于构建编译器的开发版本(LLVM,GCC等),并将其用于可定制和便携式的CK研究工作流程中:

    "ck-dev-compilers"软件包就是这一项目的一部分,它专门针对编译器的开发版本,如LLVM和GCC,以支持灵活的研究环境搭建。 CK项目的核心理念在于提供一个轻量级的包管理器和API,使得研究人员可以轻松地在不同操作...

    LLVM-8.0.1-win64.zip

    而在Linux环境下,LLVM可以作为一个替代GCC的编译系统,提供更高效的编译和优化。 在使用LLVM-8.0.1-win64.zip这个压缩包时,用户需要注意的是,其中包含的LLVM-8.0.1-64.exe是一个安装程序,用户需要运行该程序来...

    winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11

    支持c++23

    How to install legup 1.0 and legup 2.0 in Ubuntu

    由于Legup 1.0兼容llvm-gcc-4.2,因此需要安装llvm-gcc。如果只安装Legup 2.0,则可以跳过此步骤。 1. **下载并解压llvm-gcc-4.2**: ```bash cd /home/wzb/LLVM/llvm/tools wget -c ...

    LLVM-9.0.0-win64.rar

    4. 改进的调试信息:LLVM生成的调试信息更加精确,使GDB等调试器能够更好地跟踪源代码和生成的机器代码之间的关系。 5. 支持新的硬件平台:LLVM持续扩展对新硬件架构的支持,包括ARM、PowerPC、RISC-V等。 在...

    mingw64 windows gcc g++

    5. **llvm-14.0.6**: LLVM是一个开源的编译器基础设施项目,这个版本包含了LLVM的优化和分析工具,可以与GCC结合使用,提供更高效的编译选项。 6. **mingw-w64**: 明确表示这是Mingw64项目的一部分,专门为64位...

    llvm-project-llvmorg-13.0.0-centos79-gcc11.1

    1.centos7.9下编译 clang全家桶,压缩包中已编译好,centos79 下可以直接make install; 2.编译过程如下: wget ...devtoolset-11:gcc11.1 llvm-project: clang clang lldb等

    基于LLVM架构的ARM后端移植

    尤其是在全局优化方面,LLVM相较于GCC有着显著的优势。此外,LLVM生成的代码编译时间较短,具有更为清晰的架构层次和更详尽的文档支持,因此逐渐被更多的科研机构和商业项目采纳。 ##### 1.2 LLVM架构结构 LLVM项目...

    LLVM/Clang on windows

    相比于其他编译器(如GCC或MSVC),Clang能够更精确地指出错误发生的位置,并提供具体的错误信息。在Clang的错误信息中,可以看到它能够指出函数体中缺失分号的具体行号和位置,同时也能准确指出变量未声明的错误。 ...

    LLVM-12.0.0-win64.exe

    Clang是一个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器.快速编译和较少内存占用 ;...兼容GCC; https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.0/LLVM-12.0.0-win64.exe

Global site tag (gtag.js) - Google Analytics