美文网首页
GCC的编译C语言的编译过程

GCC的编译C语言的编译过程

作者: 1519f8ccc7b0 | 来源:发表于2017-04-05 16:25 被阅读0次

    1. GCC介绍

    编写过C和C++的朋友对GCC一定不会陌生,GCC最初是由GNU开发的C语言编译器,后很快扩展,变得可以支持C++,后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。
    GCC原本作为GNU操作系统的官方编译器,后来被大多数类UNIX操作系统采纳为标准编译器。

    2. GCC编译C语言

    常用做法:
    gcc hello.c -o hello
    编译器会直接生成可执行文件hello。

    那么编译器中间经过了哪些步骤呢?

    3. 编译过程

    3.1 预处理

    执行命令
    gcc -o hello.i -E hello.c
    gcc预处理器将处理以#开头的命令,如#include xxx.h ,预处理器将直接把xxx.h中的内容插入到hello.i中。可通过命令查看最终内容
    vi hello.i

    3.2 转化为汇编

    执行命令
    gcc -o hello.s -S hello.i
    编译器将c语言编译为汇编语言,可通过命令查看最终内容
    vi hello.s

    3.3 编译汇编

    执行命令
    gcc -o hello.o -c hello.s
    编译器将汇编语言便以为机器语言保存在hello.o中,这是个二进制文件,可通过命令查看其内容
    hexdump hello.o

    3.4 链接阶段

    执行命令
    gcc -o hello hello.o
    链接阶段负责将我们程序中使用的公共库进行关联,比如hello.c使用了printf函数,此函数保存在printf.o文件中,链接阶段就负责进行这种关联。链接后的都可执行文件hello,运行之
    ./hello

    4 总结

    源文件→预处理OP→汇编化OP→机器码OP→链接OP→可执行文件

    注:OP为操作,两端为文件

    相关文章

      网友评论

          本文标题:GCC的编译C语言的编译过程

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