@GCC是Linux操作系统下一个非常重要的源代码编译工具,有着许多重要的选项,支持许多不同语言的编译,如C、C++、Ada、 Fortran、Objective、Perl、Python、Ruby以及Java等,甚至Linux的许多内核和许多其他自由软件以及开放源码应用程序都是用C语言编写并经gcc编译而成的.

---在命令行下可以执行apt-get install gcc命令来安装gcc

---Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]

其中,目标文件可缺省,Gcc默认生成可执行的文件名为:a.out

然后输入./a.out 便可运行得到结果

 

@g++是C++编译器,用法与gcc一致

    1.编译单个源文件

    [例如]在屏幕上打印"Hello,Linux."

    [源代码]

    #include<stdio.h>

    #include<stdlib.h>

    int main(int argc,char **argv)

    {

        printf("Hello,Linux.\n");

        exit(0);  //这里是零

    }

    将源文件保存为hello.c,开始进行编译

    gcc -o hello hello.c

  gcc hello.c   //会生成一个a.out文件,不推荐这种方法。

    编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行

    ./hello

    在屏幕上,你将会看到打印结果:Hello,Linux.

    说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序名称;

    2.编译多个源文件

    3.使用外部函数库

    4.使用共享函数库和静态函数库

    5.gcc选项详细描述

 

@用gcc编译成执行程序。

#gcc hello.c

该命令将hello.c直接生成最终二进制可执行程序a.out

这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出文件,默认输出为a.out。

如何要指定最终二进制可执行程序名,那么用-o选项来指定名称。比如需要生成执行程序hello.exe

那么

#gcc hello.c -o hello.exe

 

@GCC的命令剖析--四步走

从上面我们知道GCC编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。

GCC编译C源码有四个步骤:

预处理-----> 编译 ----> 汇编 ----> 链接

1.预处理,生成预编译文件(.文件):

        Gcc –E hello.c –o hello.i
2.编译,生成汇编代码(.s文件):

        Gcc –S hello.i –o hello.s
3.汇编,生成目标文件(.o文件):
        Gcc –c hello.s –o hello.o
4.链接,生成可执行文件:
        Gcc hello.o –o hello

 

@ gcc简介
    Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译 器,其执行效率与一般的编译器相比平均效率要高20%~30%。gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如 果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件 和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。
    .c为后缀的文件,C语言源代码文件;
    .a为后缀的文件,是由目标文件构成的档案库文件;
    .C,.cc或.cxx 为后缀的文件,是C++源代码文件;
    .h为后缀的文件,是程序所包含的头文件;
    .i 为后缀的文件,是已经预处理过的C源代码文件;
    .ii为后缀的文件,是已经预处理过的C++源代码文件;
    .m为后缀的文件,是Objective-C源代码文件;
    .o为后缀的文件,是编译后的目标文件;
    .s为后缀的文件,是汇编语言源代码文件;
    .S为后缀的文件,是经过预编译的汇编语言源代码文件。

posted on 2014-05-13 19:46  学到老死  阅读(2861)  评论(0编辑  收藏  举报