BBS水木清华站∶精华区

 
 
 
 
GCC(1)                      GNU Tools                      GCC(1) 
 
 
名称: 
        gcc, g++  -  GNU C 与 C++ 程式编译器 
 
 
使用语法: 
       gcc [ option | filename ]... 
       g++ [ option | filename ]... 
 
       其中 option   为 gcc 使用时的选项(後面会再详述), 
         而 filename 为欲以 gcc 处理的档案 
 
警告: 
      本使用手册的内容乃摘自 gcc 的完整使用文件,主要只写出 gcc 使 
      用时的选项,以方便使用 gcc 时查阅。 
 
      本使用手册除非有人自愿维护,否则本手册的内容不见得会与目前最 
      新的 gcc 相符。如果你发现任何不符合之处,请核对 gcc 的 info 
      文件 (译注:用"info gcc"的指令即可阅读 gcc 的 info 文件)。 
 
      若我们在本手册中,发现有因失去时效而足以造成严重困扰的内容, 
      我们将不会继续散布这份手册。在发展 gcc 之外,我们并没有剩馀 
      的时间将本手册的内容随 info 文件一同更新。在 The GNU project 
      中,"man page" 这种东西将会被 info 文件所取代,我们不会继续 
      浪费时间在 man page 上面。 
 
      想看最新最完整的文件,请参考 gcc 的 info 文件,或阅读 Using 
      and Porting GNU CC (for version 2.0) 这本书。这两者均出自於 
      gcc.texinfo 这份 Texinfo 的原始文件。 
 
 
说明: 
      这 C 与 C++ 的 compiler 已将产生新程式的相关程序整合起来。产 
      生一个新的程式需要经过四个阶段:前置处理、编译、组译、连结, 
      而这两个编译器都能将输入的档案做不同阶段的处理。虽然原始程式 
      码的副档名可用来分辨编写原始程式码所用的语言,但不同的 compiler 
      ,其预设的处理程序却各不相同: 
 
       gcc    预设经由前置处理过(副档名为.i)的档为 C 语言,并於程 
              式连结阶段以 C 的连结方式处理。 
 
       g++    预设经由前置处理过(副档名为.i)的档为 C++ 语言,并於程 
              式连结阶段以 C++ 的连结方式处理。 
 
 
       原始程式码的副档名指出所用编写程式所用的语言,以及相对应的处 
       理方法: 
 
       .c    C 原始程式                     ;   前置处理、编译、组译 
       .C    C++ 原始程式                   ;   前置处理、编译、组译 
       .cc   C++ 原始程式                   ;   前置处理、编译、组译 
       .cxx  C++ 原始程式                   ;   前置处理、编译、组译 
       .m    Objective-C 原始程式           ;   前置处理、编译、组译 
       .i    已经过前置处理之 C 原始程式    ;   编译、组译 
       .ii   已经过前置处理之 C++ 原始程式  ;   编译、组译 
       .s    组合语言原始程式               ;   组译 
       .S    组合语言原始程式               ;   前置处理、组译 
       .h    前置处理档案(标头档)           ;   (不常出现在指令行) 
 
 
       其他副档名的档案是由连结程式来处理,通常有: 
 
       .o    Object file 
       .a    Archive file 
 
 
       除非编译过程出现错误,否则 "连结" 一定是产生一个新程式的最 
       後阶段。然而你也可以以 -c、-s 或 -E 等选项,将整个过程自四 
       个阶段中的其中一个停止。在连结阶段,所有与原始码相对应的 
       .o 档案、程式库、和其他无法自档名辨明属性的档(包括不以 .o 
       为副档名的 object file 以及副档名为 .a 的 archive file)都会 
       交由连结程式来处理(在指令行将那些档案当作连结程式的参数传给 
       连结程式)。 
 
 
选项: 
       不同的选项必须分开来下:例如 `-dr' 这个选项就与 `-d -r' 大 
       不相同。 
 
       绝大部份的 `-f' 及 `-W' 选项都有正反两种形式:-fname 及 
       -fno-name (或 -Wname 及 -Wno-name)。以下只列出非预设的那个 
       形式。 
 
       以下是所有选项的摘要。以形式来分类。选项的意义将另辟小节说 
       明。 
 
       一般性(概略、常用的)选项 
              -c -S -E -o file -pipe -v -x language 
 
       程式语言选项 
              -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 
 
       编译时的警告选项 
              -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 
 
       除错选项 
              -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 
 
       最佳化选项 
              -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 
 
       前置处理选项 
              -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 
 
       组译程式选项 
              -Wa,option 
 
       连结程式选项 
              -llibrary -nostartfiles -nostdlib -static -shared 
              -symbolic -Xlinker option -Wl,option -u symbol 
 
       目录选项 
              -Bprefix -Idir -I- -Ldir 
 
       Target Options 
              -b  machine -V version 
 
       与机器(平台)相关的选项 
              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. 
 
档案说明 
       file.c             C source file 
       file.h             C header (preprocessor) file 
       file.i             经前置处理过的 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, 参阅 man page 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). 
 
参阅: 
       1.cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)等 man page。 
       2.`gcc', `cpp', `as', `ld', 及 `gdb' 的 info 文件。 
       3.Using and Porting GNU CC (for  version  2.0), 
                Richard  M.Stallman; 
       4.The C Preprocessor, 
                Richard M. Stallman; 
       5.Debugging with GDB: the GNU Source-Level Debugger, 
                Richard  M.Stallman and Roland H. Pesch; 
       6.Using as: the GNU Assembler, 
                Dean Elsner, Jay Fenlason & friends; 
       7.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. 
 
作者: 
       请参阅 GNU CC 手册中 GNU CC 的贡献者。 

BBS水木清华站∶精华区