linux历程--GCC程序编译

来源:互联网 发布:知网 社会经济数据库 编辑:程序博客网 时间:2024/06/13 11:27
1)GCC编译器能将C、C++语言源程序、汇编语言编译、链接成可执行文件。


2)GCC通过后缀名来区分输入文件的类别:
   .c为后缀:C语言源代码文件
   .a为后缀:由目标文件构成的库文件
   .C,.cc或.cxx为后缀:C++源代码文件
   .h为后缀:头文件
   .i为后缀:已经预处理过的C源代码文件
   .ii为后缀:已经预处理过的C++源代码文件
   .o为后缀:编译后的目标文件
   .s为后缀:汇编语言源代码文件
   .S为后缀:经过预编译的汇编语言源代码


3)gcc最基本的用法:
         gcc [options] [filenames]
   options:编译所需要的编译选项
   filenames:要编译的文件名


4)基本、常用的编译选项:
    -o output_filename :确定可执行文件的名称为output_filename。如果不        给出该选项,gcc就给出预设的可执行文件a.out
    -c :只编译,不连接成可执行文件,编译器只是由输入的.c等源文件生成.
        为后缀的目标文件
    -g :产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序
        行调试,就必须加入这个选项
    -O :对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链
        接过程中进行优化处理。这样产生的可执行文件的执行效率可以提高,
        但是编译、链接速度就相应变慢
    -O2 :比-O更好的优化编译、链接,当然编译、链接过程更慢。注意,可测
        试运行可执行文件的运行时间,要显示运行时间是在执行命令前加tim
        即可,如: time ./a.out   表示运行a.out,同时显示运行时间
    -Idirname :将dirname所指出的目录加入到程序头文件目录列表中。例:
           gcc foo.c -I/home/include -o foo
    -Ldirname :将dirname所指出的目录加入到库文件的目录列表中。在默认状
        态下,链接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的库文
        件,这个选项告诉链接程序,首先到-L指定的目录中去寻找,然后再到
        系统预设路径中寻找
    -lname :在链接时,装载名字为“libname.a”的函数库,该函数库位于系        统预设的目录或者由-L选项确定的目录下,例如,-lm表示链接名为
     “libm.a”的数学函数库。例:
             gcc foo.c -L/home/lib -lfoo -o foo
    -static :静态链接库文件,如:  gcc -static hello.c -o hello。库
      动态与静态两种,动态库常用.so为后缀,静态用.a为后缀。linux下进
      链接的缺省操作是首先链接动态库。
    -Wall :生成所有警告信息
    -w :不生成任何警告信息
    -DMACRO :定义MACRO宏,等效于程序中使用#define MACRO
原创粉丝点击