BBS水木清华站∶精华区

 
 
 
 
GCC(1)                      GNU Tools                      GCC(1) 
 
 
NAME 
       gcc, g++ - GNU project C and C++ Compiler (v2.6) 
 
SYNOPSIS 
       gcc [ option | filename ]... 
       g++ [ option | filename ]... 
 
WARNING 
       The  information  in  this man page is an extract from the 
       full documentation of the GNU C compiler, and  is  limited 
       to the meaning of the options. 
 
       This  man  page  is not kept up to date except when volun- 
       teers want to maintain it.   If  you  find  a  discrepancy 
       between  the  man  page and the software, please check the 
       Info file, which is the authoritative documentation. 
 
       If we find that the things in this man page that  are  out 
       of date cause significant confusion or complaints, we will 
       stop distributing the man page.  The alternative, updating 
       the  man  page when we update the Info file, is impossible 
       because the rest of the work of maintaining GNU CC  leaves 
       us no time for that.  The GNU project regards man pages as 
       obsolete and should not let them take time away from other 
       things. 
 
       For  complete and current documentation, refer to the Info 
       file `gcc' or the manual Using and  Porting  GNU  CC  (for 
       version  2.0).  Both are made from the Texinfo source file 
       gcc.texinfo. 
 
DESCRIPTION 
       The C and C++  compilers  are  integrated.   Both  process 
       input  files  through  one or more of four stages: prepro- 
       cessing, compilation, assembly, and linking.  Source file- 
       name suffixes identify the source language, but which name 
       you use for the compiler governs default assumptions: 
 
       gcc    assumes preprocessed (.i) files are C and assumes C 
              style linking. 
 
       g++    assumes preprocessed (.i) files are C++ and assumes 
              C++ style linking. 
 
       Suffixes of source file names indicate  the  language  and 
       kind of processing to be done: 
 
       .c    C source; preprocess, compile, assemble 
       .C    C++ source; preprocess, compile, assemble 
       .cc   C++ source; preprocess, compile, assemble 
       .cxx  C++ source; preprocess, compile, assemble 
       .m    Objective-C source; preprocess, compile, assemble 
       .i    preprocessed C; compile, assemble 
       .ii   preprocessed C++; compile, assemble 
       .s    Assembler source; assemble 
       .S    Assembler source; preprocess, assemble 
       .h    Preprocessor file; not usually named on command line 
 
       Files  with other suffixes are passed to the linker.  Com- 
       mon cases include: 
 
       .o    Object file 
       .a    Archive file 
 
       Linking is always the last stage unless you use one of the 
       -c,  -S,  or -E options to avoid it (or unless compilation 
       errors stop the whole process).  For the link  stage,  all 
       .o  files  corresponding  to  source  files, -l libraries, 
       unrecognized filenames (including named  .o  object  files 
       and  .a archives) are passed to the linker in command-line 
       order. 
 
OPTIONS 
       Options must be separate: `-dr' is  quite  different  from 
       `-d -r '. 
 
       Most `-f' and `-W' options have two contrary forms: -fname 
       and -fno-name (or -Wname and -Wno-name).   Only  the  non- 
       default forms are shown here. 
 
       Here  is  a  summary  of all the options, grouped by type. 
       Explanations are in the following sections. 
 
       Overall Options 
              -c -S -E -o file -pipe -v -x language 
 
       Language Options 
              -ansi -fall-virtual -fcond-mismatch 
              -fdollars-in-identifiers -fenum-int-equiv 
              -fexternal-templates -fno-asm -fno-builtin 
              -fno-strict-prototype -fsigned-bitfields 
              -fsigned-char -fthis-is-variable 
              -funsigned-bitfields -funsigned-char 
              -fwritable-strings -traditional -traditional-cpp 
              -trigraphs 
 
       Warning Options 
              -fsyntax-only -pedantic -pedantic-errors -w -W 
              -Wall -Waggregate-return -Wcast-align -Wcast-qual 
              -Wchar-subscript -Wcomment -Wconversion 
              -Wenum-clash -Werror -Wformat -Wid-clash-len 
              -Wimplicit -Winline -Wmissing-prototypes 
              -Wmissing-declarations -Wnested-externs -Wno-import 
              -Wparentheses -Wpointer-arith -Wredundant-decls 
              -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch 
              -Wtemplate-debugging -Wtraditional -Wtrigraphs 
              -Wuninitialized -Wunused -Wwrite-strings 
 
       Debugging Options 
              -a -dletters -fpretend-float -g -glevel -gcoff 
              -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ 
              -ggdb -p -pg -save-temps -print-file-name=library 
              -print-libgcc-file-name -print-prog-name=program 
 
       Optimization Options 
              -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks 
              -fdelayed-branch -felide-constructors 
              -fexpensive-optimizations -ffast-math -ffloat-store 
              -fforce-addr -fforce-mem -finline-functions 
              -fkeep-inline-functions -fmemoize-lookups 
              -fno-default-inline -fno-defer-pop 
              -fno-function-cse -fno-inline -fno-peephole 
              -fomit-frame-pointer -frerun-cse-after-loop 
              -fschedule-insns -fschedule-insns2 
              -fstrength-reduce -fthread-jumps -funroll-all-loops 
              -funroll-loops -O -O2 
 
       Preprocessor Options 
              -Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H 
              -idirafter dir -include file -imacros file -iprefix 
              file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P 
              -Umacro -undef 
 
       Assembler Option 
              -Wa,option 
 
       Linker Options 
              -llibrary -nostartfiles -nostdlib -static -shared 
              -symbolic -Xlinker option -Wl,option -u symbol 
 
       Directory Options 
              -Bprefix -Idir -I- -Ldir 
 
       Target Options 
              -b  machine -V version 
 
       Configuration Dependent Options 
              M680x0 Options 
              -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881 
              -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield 
              -mrtd -mshort -msoft-float 
 
              VAX Options 
              -mg -mgnu -munix 
 
              SPARC Options 
              -mepilogue -mfpu -mhard-float -mno-fpu 
              -mno-epilogue -msoft-float -msparclite -mv8 
              -msupersparc -mcypress 
 
              Convex Options 
              -margcount -mc1 -mc2 -mnoargcount 
 
              AMD29K Options 
              -m29000 -m29050 -mbw -mdw -mkernel-registers 
              -mlarge -mnbw -mnodw -msmall -mstack-check 
              -muser-registers 
 
              M88K Options 
              -m88000 -m88100 -m88110 -mbig-pic 
              -mcheck-zero-division -mhandle-large-shift 
              -midentify-revision -mno-check-zero-division 
              -mno-ocs-debug-info -mno-ocs-frame-position 
              -mno-optimize-arg-area -mno-serialize-volatile 
              -mno-underscores -mocs-debug-info 
              -mocs-frame-position -moptimize-arg-area 
              -mserialize-volatile -mshort-data-num -msvr3 -msvr4 
              -mtrap-large-shift -muse-div-instruction 
              -mversion-03.00 -mwarn-passed-structs 
 
              RS6000 Options 
              -mfp-in-toc -mno-fop-in-toc 
 
              RT Options 
              -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs 
              -mfull-fp-blocks -mhc-struct-return -min-line-mul 
              -mminimum-fp-blocks -mnohc-struct-return 
 
              MIPS Options 
              -mcpu=cpu type -mips2 -mips3 -mint64 -mlong64 
              -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames 
              -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy 
              -mno-memcpy -mno-mips-tfile -mmips-tfile 
              -msoft-float -mhard-float -mabicalls -mno-abicalls 
              -mhalf-pic -mno-half-pic -G num -nocpp 
 
              i386 Options 
              -m486 -mno-486 -msoft-float -mno-fp-ret-in-387 
 
              HPPA Options 
              -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs 
              -mno-shared-libs -mlong-calls -mdisable-fpregs 
              -mdisable-indexing -mtrailing-colon 
 
              i960 Options 
              -mcpu-type -mnumerics -msoft-float 
              -mleaf-procedures -mno-leaf-procedures -mtail-call 
              -mno-tail-call -mcomplex-addr -mno-complex-addr 
              -mcode-align -mno-code-align -mic-compat 
              -mic2.0-compat -mic3.0-compat -masm-compat 
              -mintel-asm -mstrict-align -mno-strict-align 
              -mold-align -mno-old-align 
 
              DEC Alpha Options 
              -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float 
 
              System V Options 
              -G -Qy -Qn -YP,paths -Ym,dir 
 
       Code Generation Options 
              -fcall-saved-reg -fcall-used-reg -ffixed-reg 
              -finhibit-size-directive -fnonnull-objects 
              -fno-common -fno-ident -fno-gnu-linker 
              -fpcc-struct-return -fpic -fPIC 
              -freg-struct-returno -fshared-data -fshort-enums 
              -fshort-double -fvolatile -fvolatile-global 
              -fverbose-asm 
 
PRAGMAS 
       Two  `#pragma'  directives  are  supported for GNU C++, to 
       permit using the same header file for two purposes:  as  a 
       definition  of  interfaces to a given object class, and as 
       the full definition of the contents of that object  class. 
 
       #pragma interface 
              (C++  only.)   Use  this  directive in header files 
              that define object classes, to save space  in  most 
              of  the  object files that use those classes.  Nor- 
              mally, local copies of certain information  (backup 
              copies of inline member functions, debugging infor- 
              mation, and the internal tables that implement vir- 
              tual  functions)  must  be kept in each object file 
              that includes class definitions.  You can use  this 
              pragma  to  avoid  such duplication.  When a header 
              file containing `#pragma interface' is included  in 
              a  compilation, this auxiliary information will not 
              be generated (unless the main input source file it- 
              self  uses `#pragma implementation').  Instead, the 
              object files will contain references to be resolved 
              at link time. 
 
       #pragma implementation 
 
       #pragma implementation "objects.h" 
              (C++  only.)  Use this pragma in a main input file, 
              when you want  full  output  from  included  header 
              files  to be generated (and made globally visible). 
              The included  header  file,  in  turn,  should  use 
              `#pragma  interface'.  Backup copies of inline mem- 
              ber functions, debugging information, and  the  in- 
              ternal  tables  used to implement virtual functions 
              are all generated in implementation files. 
 
              If you use `#pragma implementation' with  no  argu- 
              ment,  it  applies to an include file with the same 
              basename as  your  source  file;  for  example,  in 
              `allclass.cc',  `#pragma  implementation' by itself 
              is   equivalent    to    `#pragma    implementation 
              "allclass.h"'.  Use the string argument if you want 
              a single implementation file to include  code  from 
              multiple header files. 
 
              There  is no way to split up the contents of a sin- 
              gle header file into multiple implementation files. 
 
FILES 
       file.c             C source file 
       file.h             C header (preprocessor) file 
       file.i             preprocessed C source file 
       file.C             C++ source file 
       file.cc            C++ source file 
       file.cxx           C++ source file 
       file.m             Objective-C source file 
       file.s             assembly language file 
       file.o             object file 
       a.out              link edited output 
       TMPDIR/cc*         temporary files 
       LIBDIR/cpp         preprocessor 
       LIBDIR/cc1         compiler for C 
       LIBDIR/cc1plus     compiler for C++ 
       LIBDIR/collect     linker front end needed on some machines 
       LIBDIR/libgcc.a    GCC subroutine library 
       /lib/crt[01n].o    start-up routine 
       LIBDIR/ccrt0       additional start-up routine for C++ 
       /lib/libc.a        standard C library, see intro(3) 
       /usr/include       standard directory for #include files 
       LIBDIR/include     standard gcc directory for #include files 
       LIBDIR/g++-include additional g++ directory for #include 
 
       LIBDIR is usually /usr/local/lib/machine/version. 
       TMPDIR comes from the environment variable TMPDIR (default 
       /usr/tmp if available, else /tmp). 
 
SEE ALSO 
       cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1). 
       `gcc', `cpp', `as', `ld', and `gdb' entries in info. 
       Using and Porting GNU CC (for  version  2.0),  Richard  M. 
       Stallman;  The C Preprocessor, Richard M. Stallman; Debug- 
       ging with GDB: the GNU Source-Level Debugger,  Richard  M. 
       Stallman and Roland H. Pesch; Using as: the GNU Assembler, 
       Dean Elsner, Jay Fenlason & friends; ld: the  GNU  linker, 
       Steve Chamberlain and Roland Pesch. 
 
BUGS 
       For instructions on reporting bugs, see the GCC manual. 
 
COPYING 
       Copyright  1991, 1992, 1993 Free Software Foundation, Inc. 
 
       Permission is granted  to  make  and  distribute  verbatim 
       copies  of  this  manual provided the copyright notice and 
       this permission notice are preserved on all copies. 
 
       Permission is granted to copy and distribute modified ver- 
       sions  of  this  manual  under the conditions for verbatim 
       copying, provided that the entire resulting  derived  work 
       is  distributed  under  the  terms  of a permission notice 
       identical to this one. 
 
       Permission is granted to copy and distribute  translations 
       of this manual into another language, under the above con- 
       ditions for modified versions, except that this permission 
       notice  may  be  included  in translations approved by the 
       Free Software Foundation instead of in  the  original  En- 
       glish. 
 
AUTHORS 
       See the GNU CC Manual for the contributors to GNU CC. 

BBS水木清华站∶精华区