gcc

作者: 没有梦想_何必远方 | 来源:发表于2020-11-22 00:29 被阅读0次

    gcc & clang

    GCC:GNU(Gnu's Not Unix)编译器套装(GNU Compiler Collection,GCC),指一套编程语言编译器,以GPL及LGPL许可证所发行的自由软件,也是GNU项目的关键部分,也是GNU工具链的主要组成部分之一。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。GCC原本用C开发,后来因为LLVM、Clang的崛起,它更快地将开发语言转换为C++。

    GCC支持的语言:原名为GNU C语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC在发布后很快地得到扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada,Go与其他语言。

    许多操作系统,包括许多类Unix系统,如Linux及BSD家族都采用GCC作为标准编译器。苹果电脑预装的Mac OS X操作系统也采用这个编译器。

    GCC目前由世界各地不同的数个程序员小组维护。它是移植到最多中央处理器架构以及最多操作系统的编译器。由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与创建其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP与BeOS。

    GCC目前由世界各地不同的数个程序员小组维护。它是移植到最多中央处理器架构以及最多操作系统的编译器。由于GCC已成为GNU系统的官方编译器(包括GNU/Linux家族),它也成为编译与创建其他操作系统的主要编译器,包括BSD家族、Mac OS X、NeXTSTEP与BeOS。

    GCC支持的主要处理器架构:ARM、x86、x86-64、MIPS、PowerPC等。

    Clang:是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。它采用了底层虚拟机(LLVM)作为其后端。它的目标是提供一个GNU编译器套装(GCC)的替代品。作者是克里斯·拉特纳(Chris Lattner),在苹果公司的赞助支持下进行开发,而源代码授权是使用类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。Clang主要由C++编写。

    GCC与Clang区别:

    GCC特性:除支持C/C++/Objective-C/Objective-C++语言外,还是支持Java/Ada/Fortran/Go等;当前的Clang的C++支持落后于GCC;支持更多平台;更流行,广泛使用,支持完备。

    Clang特性:编译速度快;内存占用小;兼容GCC;设计清晰简单、容易理解,易于扩展增强;基于库的模块化设计,易于IDE集成;出错提示更友好。

    Clang采用的license是BSD,而GCC是GPLv3。


    gcc编译步骤

    1. 预处理 .c -> .i 展开头文件、宏替换
    2. 编译 .i -> .s
    3. 汇编 .s -> .o
    4. 连接 .o -> 可执行文件

    gcc编译一步到位:

    gcc main.c -o main
    会生成main可执行文件,./main就会执行,file main可以查看文件属性

    gcc 编译参数

    TODO...

    相关文章

      网友评论

        本文标题:gcc

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