zoukankan      html  css  js  c++  java
  • gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件)

    链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)。

     

    一个现代编译器的主要工作流程如下:

    源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)

     

    执行过程 虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶

     

    1.预处理(也称预编译,Preprocessing):命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

     

    2.编译(Compilation):接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。

     

    3.汇编(Assembly):汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

     

    4.链接(Linking):当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到 的库函数也从各自所在的档案库中连到合适的地方。

     

    实例:

    1.编写.c文件如下:

    #include <stdio.h>

    int main()

    {

    printf("This is my first c program in ubuntu");

    return 0;

    }

     

    2.预编译过程:

    gcc -E ./hello.c -o hello.i //.i 为后缀的文件,是已经预处理过的C源代码文件,可以省略这一步

    cat hellp.c | wc -l //查看hello.c文件内容的行数。

    cat hellp.i | wc -l //查看hello.i文件内容的行数。

     

    3.汇编过程:

    gcc -S hello.i -o hello.s //.s为后缀的文件,是汇编语言源代码文件;可以省略这一步

     

    4.编译过程

    gcc -c ./hello.c //在当前文件夹下生成hello.o .o为后缀的文件,是编译后的目标文件;

    gcc -c hello.c -o hello.o //在当前文件夹下生成hello.o

     

    5.链接过程:

    gcc hello.o -o hello

     

    6.直接把hello文件拖动到终端即可执行。

     

    用g++编译c++源程序

    用g++编译c++源程序和c语言类似,可将gcc改为g++逐个尝试。以下只提供一些简单介绍:

    -E Preprocess only; do not compile, assemble or link

    -S Compile only; do not assemble or link

    -c Compile and assemble, but do not link

    -o Place the output into

  • 相关阅读:
    Dynamics AX 2012 R2 配置E-Mail模板
    Dynamics AX 2012 R2 设置E-Mail
    Dynamics AX 2012 R2 为运行失败的批处理任务设置预警
    Dynamics AX 2012 R2 耗尽用户
    Dynamics AX 2012 R2 创建一个专用的批处理服务器
    Dynamics AX 2012 R2 创建一个带有负载均衡的服务器集群
    Dynamics AX 2012 R2 安装额外的AOS
    Dynamics AX 2012 R2 将系统用户账号连接到工作人员记录
    Dynamics AX 2012 R2 从代码中调用SSRS Report
    Dynamics AX 2012 R2 IIS WebSite Unauthorized 401
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/8474428.html
Copyright © 2011-2022 走看看