美文网首页
gcc 编译过程

gcc 编译过程

作者: mnikn | 来源:发表于2017-03-20 21:46 被阅读61次
    //hello.c
    #include <stdio.h>
    int main()
    {
        printf("Hello World!\n");
        return 0;
    }
    
    gcc -o hello hello.c
    

    在执行上面语句时,-o实际上分多步来处理.c文件。下面我们讲一下gcc的编译过程。

    预处理器处理

    首先gcc使用预处理器将.c文件中的include文件引入,相当于把#include <stdio.h>替换为stdio.h里面的内容,由于只是进行文本替换,这一步不会检测代码中的语法错误。这个过程会生成.i文件,我们可以通过以下命令生成.i文件。

    gcc -E hello.i -o hello.c
    

    gcc -E参数让gcc在预处理后停止编译行为。

    转换为目标代码

    第二步gcc将hello.i编译为目标代码,这一步会检测代码中的语法错误。这个过程会生成.o文件,我们可以通过以下命令生成.o文件。

    gcc -c hello.i -o hello.o
    

    我们会发现.o文件是一堆乱码,因为生成的是二进制文件。

    链接为可执行文件

    最后一步gcc将.o文件链接为可执行文件,命令如下。

    gcc hello.o -o hello
    

    最后执行文件

    // ./后不能加空格
    ./hello
    

    相关文章

      网友评论

          本文标题:gcc 编译过程

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