InuxシステムにおけるGccの基本使用


  :http://zhidao.baidu.com/question/18243776.html
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      ,                。 
Gcc      
     Gcc C      ,   gcc C                          ,              ∶   (     ,Preprocessing)、  (Compilation)、  (Assembly)   (Linking)。 
  gcc    cpp     ,       ,            (include)、     (    define )    。    cc1    ,             .o        。              ,  as    ,    ,.S                、.s                        .o        。             ,gcc   ld           ,        。     ,                       ,  ,                             。 

Gcc         
   Gcc      ,                     。Gcc           100  ,                ,          、      。 
Gcc       ∶gcc [options] [filenames] 
  options           ,filenames         。 
-c,   ,          ,         .c        .o        ,                  。 
-o output_filename,          output_filename,              。         ,gcc           a.out。 
-g,        (GNU gdb)        ,          ,           。 
-O,         、  ,      ,         、           ,                   ,  ,  、             。 
-O2, -O       、  ,      、       。 
-Idirname, dirname                   ,             。C             ∶ 
A)#include 
B)#include “myinc.h” 
  ,A      (< >),B      (“ ”)。  A ,     cpp           ( /usr/include)        ,   B ,cpp           ,          cpp,                 ,     dirname      。      ,                        ,       -I        。 
-Ldirname, dirname                        ,            。      ,    ld         ( /usr/lib)           ,          ,   -L         ,            ,             ,           ,         。 
-lname,    ,     “libname.a”    ,                -L        。  ,-lm      “libm.a”      。 
         gcc                ,           Linux       。 
           test.c C       ,          ,        ∶ 
gcc test.c 
  ,   、        ,           a.out      ,         ,          、                   ,             。         。 
            testmain.c  testsub.c  ,              ,             test,          ∶ 
gcc testmain.c testsub.c □lm □o test 
  ,-lm          libm.a。 

Gcc         
Gcc              ,       ,             。      ,gcc      ,                 、  ,        ,              。gcc                ,                 。 

   ∶C     
    ∶  source.c  n      (syntex errror)。       ,    C       ,             n         ,                    。     ,          ,gcc        ,               ,      ,          C       。 
   ∶      
    ∶      head.h(Can not find include file head.h)。                    ,            、              ,                 。 

   ∶      
    ∶             ,  ∶ 
ld: -lm: No such file or directory 
                    ,            、               ,        find                  ,                          。 
   ∶      
    ∶       (Undefined symbol)。              ,       ∶                         ,     、  ,         ,                 ,              ;                 ,            ,                    ,               ,             ar                     ,    ,  gcc      -l -L 。 
    、        ,              、        ,         。        ,       C               ,        。       ,   、      ,       ,              ,        ,                 ,          、     。    ,       ,          、     、  。           、                、        ,