Annotation of GNUtools/cc/gcc.hlp, revision 1.1

1.1     ! root        1: 1 GCC
        !             2: 
        !             3:  The GCC command invokes the GNU C compiler.
        !             4: 
        !             5:        GCC file-spec
        !             6: 
        !             7: 2 Parameters
        !             8: 
        !             9:  file-spec
        !            10: 
        !            11:  A C source file.  If no input file  extension  is  specified,  GNU  C
        !            12:  assumes  .C  as  the  default extension unless the /PLUS qualifier is
        !            13:  given, in which case .CC is assumed as the default extension.
        !            14: 
        !            15:  If an extension of .CPP is given, then the source file is assumed  to
        !            16:  be  the  output of the preprocessor, and thus the preprocessor is not
        !            17:  executed.
        !            18: 
        !            19:  If an extension of .S is given, then the source file is assumed to be
        !            20:  the  assembly  code output of the compiler, and only the assembler is
        !            21:  called to generate an object file.
        !            22: 
        !            23: 2 Qualifiers
        !            24: 
        !            25:  GNU C command qualifiers modify the  way  the  compiler  handles  the
        !            26:  compilation.
        !            27: 
        !            28:  The following is the list of available qualifiers for GNU C:
        !            29: 
        !            30:        /CASE_HACK
        !            31:        /CC1_OPTIONS=(option [,option...]])
        !            32:        /DEBUG
        !            33:        /DEFINE=(identifier[=definition][,...])
        !            34:        /G_FLOAT
        !            35:        /INCLUDE_DIRECTORY=(path [,path...]])
        !            36:        /LIST[=filename]
        !            37:        /MACHINE_CODE
        !            38:        /OBJECT[=filename]
        !            39:        /OPTIMIZE
        !            40:        /PLUS
        !            41:        /PROFILE[=identifier]
        !            42:        /SCAN=(file[,file...])
        !            43:        /SHOW[=option]
        !            44:        /UNDEFINE=(identifier[,identifier,...])
        !            45:        /VERBOSE
        !            46:        /VERSION
        !            47:        /WARNING
        !            48: 
        !            49: 2 Linking
        !            50: 
        !            51:  When linking programs compiled with GNU C, you should include the GNU
        !            52:  C library before the VAX C library.  For example,
        !            53: 
        !            54:    LINK object-file,GNU_CC:[000000]GCCLIB/LIB,SYS$LIBRARY:VAXCRTL/LIB
        !            55: 
        !            56:  You can also link your program with the shared VAX C  library.   This
        !            57:  can reduce the size of the .EXE file, as well as make it smaller when
        !            58:  it's running.  For example,
        !            59: 
        !            60:    $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,SYS$INPUT/OPT
        !            61:    SYS$SHARE:VAXCRTL/SHARE
        !            62: 
        !            63:  (If you use the second example and type it in by  hand,  be  sure  to
        !            64:  type ^Z after the last carriage return).  A simpler alternative would
        !            65:  be to place the single line:
        !            66: 
        !            67:    SYS$SHARE:VAXCRTL/SHARE
        !            68: 
        !            69:  into a file called VAXCRTL.OPT, and then use the link command:
        !            70: 
        !            71:    $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,VAXCRTL.OPT/OPT
        !            72: 
        !            73:  If a program has  been  compiled  with  /G_FLOAT,  then  the  linking
        !            74:  instructions  are  slightly  different.   If you are linking with the
        !            75:  non-shared library, then the command that you should use would be:
        !            76: 
        !            77:    LINK object-file,GNU_CC:[000000]GCCLIB/LIB,SYS$LIBRARY:VAXCRTLG/LIB -
        !            78:                                 ,SYS$LIBRARY:VAXCRTL/LIB
        !            79: 
        !            80:  Note that both VAXCRTL and VAXCRTLG must be linked to.   If  you  are
        !            81:  using the shared VAX C library, then you should use a command like:
        !            82: 
        !            83:    $ LINK object-file, GNU_CC:[000000]GCCLIB/LIB,SYS$INPUT:/OPTIONS
        !            84:    SYS$SHARE:VAXCRTLG/SHARE
        !            85: 
        !            86:  In the case of the sharable library, only one  library  needs  to  be
        !            87:  linked to.
        !            88: 
        !            89:  If you need to link to libg++, it  is  easiest  to  use  the  command
        !            90:  procedure supplied with libg++ to link your program.
        !            91: 
        !            92: 2 /CASE_HACK
        !            93: 
        !            94:    /[NO]CASE_HACK      D=/CASE_HACK
        !            95: 
        !            96:  Since the VMS Linker  and  Librarian  are  not  case  sensitive  with
        !            97:  respect  to  symbol names, a "case-hack" is appended to a symbol name
        !            98:  when the symbol contains upper case characters.
        !            99: 
        !           100:  There are cases where this is undesirable, (mainly when using certain
        !           101:  applications  where modules have been precompiled, perhaps in another
        !           102:  language) and we want to compile  without  case  hacking.   In  these
        !           103:  cases the /NOCASE_HACK switch disables case hacking.
        !           104: 
        !           105: 2 /CC1_OPTIONS
        !           106: 
        !           107:  This specifies additional  switches  to  the  compiler  itself  which
        !           108:  cannot be set by means of the compiler driver.
        !           109: 
        !           110: 2 /DEBUG
        !           111: 
        !           112:  /DEBUG includes additional information in the object file  output  so
        !           113:  that the program can be debugged with the VAX Symbolic Debugger.
        !           114: 
        !           115:  To use the debugger it is also necessary to link the debugger to your
        !           116:  program, which is done by specifying the /DEBUG qualifier to the link
        !           117:  command.  With the  debugger  it  is  possible  to  set  breakpoints,
        !           118:  examine  variables,  and  set  variables  to new values.  See the VAX
        !           119:  Symbolic Debugger manual for more information, or  type  "HELP"  from
        !           120:  the debugger prompt.
        !           121: 
        !           122: 2 /DEFINE
        !           123: 
        !           124:  /DEFINE=(identifier[=definition][,...])
        !           125: 
        !           126:  /DEFINE defines a string or macro ('definition')  to  be  substituted
        !           127:  for  every  occurrence of a given string ('identifier') in a program.
        !           128:  It is equivalent to the #define preprocessor directive.
        !           129: 
        !           130:  All definitions and identifiers are  converted  to  uppercase  unless
        !           131:  they are in quotation marks.
        !           132: 
        !           133:  The simple form of the /DEFINE qualifier:
        !           134: 
        !           135:     /DEFINE=vms
        !           136: 
        !           137:  results in a definition equivalent to the preprocessor directive:
        !           138: 
        !           139:   #define VMS 1
        !           140: 
        !           141:  You must enclose macro definitions in quotation  marks,  as  in  this
        !           142:  example:
        !           143: 
        !           144:   /DEFINE="C(x)=((x) & 0xff)"
        !           145: 
        !           146:  This definition is the same as the preprocessor definition:
        !           147: 
        !           148:   #define C(x) ((x) & 0xff)
        !           149: 
        !           150:  If more than one /DEFINE is present on the GCC command line, only the
        !           151:  last /DEFINE is used.
        !           152: 
        !           153:  If both /DEFINE and /UNDEFINE are present on a command line,  /DEFINE
        !           154:  is evaluated before /UNDEFINE.
        !           155: 
        !           156: 2 /G_FLOAT
        !           157: 
        !           158:  Instructs the compiler to use "G" floating point  arithmetic  instead
        !           159:  of  "D".   The  difference  is  that  double precision has a range of
        !           160:  approximately +/-0.56e-308 to +/-0.9  e+308,  with  approximately  15
        !           161:  decimal digits precision.
        !           162: 
        !           163:  "D" floating point has the same range as  single  precision  floating
        !           164:  point, with approximately 17 decimal digits precision.
        !           165: 
        !           166:  If you use the  /G_FLOAT  qualifier,  the  linking  instructions  are
        !           167:  different.  See "Linking" for further details.
        !           168: 
        !           169: 2 /LIST
        !           170: 
        !           171:  /LIST[=list_file_name]
        !           172: 
        !           173:  This does not generate a listing file in the usual sense, however  it
        !           174:  does  direct the compiler to save the preprocessor output.  If a file
        !           175:  is not specified, then this output is written into a  file  with  the
        !           176:  same name as the source file and an extension of .CPP.
        !           177: 
        !           178: 2 /INCLUDE_DIRECTORY
        !           179: 
        !           180:   /INCLUDE_DIRECTORY=(path [,path...])
        !           181: 
        !           182:  The /INCLUDE_DIRECTORY qualifier provides additional  directories  to
        !           183:  search  for  user-defined  include  files.   'path'  can  be either a
        !           184:  logical name or a directory specification.
        !           185: 
        !           186:  There  are  two  forms  for  specifying  include  files  -   #include
        !           187:  "file-spec"  and  #include <file-spec>.  For the #include "file-spec"
        !           188:  form, the search order is:
        !           189: 
        !           190:   1.  The directory containing the source file.
        !           191: 
        !           192:   2.  The directories in the /INCLUDE qualifier (if any).
        !           193: 
        !           194:   3.  The directory (or directories) specified in the logical name
        !           195:       GNU_CC_INCLUDE.
        !           196: 
        !           197:   4.  The directory (or directories) specified in the logical name
        !           198:       SYS$LIBRARY.
        !           199: 
        !           200:   For the #include <file-spec> form, the search order is:
        !           201: 
        !           202:   1.  The directories specified in the /INCLUDE qualifier (if any).
        !           203: 
        !           204:   2.  The directory (or directories) specified in the logical name
        !           205:       GNU_CC_INCLUDE.
        !           206: 
        !           207:   3.  The directory (or directories) specified in the logical name
        !           208:       SYS$LIBRARY.
        !           209: 
        !           210: 2 /MACHINE_CODE
        !           211: 
        !           212:  Tells GNU C to output the machine code  generated  by  the  compiler.
        !           213:  The  machine code is output to a file with the same name as the input
        !           214:  file, with the extension .S.  An  object  file  is  still  generated,
        !           215:  unless /NOOBJ is also specified.
        !           216: 
        !           217: 2 /OBJECT
        !           218: 
        !           219:    /OBJECT[=filename]
        !           220:    /NOOBJECT
        !           221: 
        !           222:         Controls whether or not an object file  is  generated  by  the
        !           223:  compiler.
        !           224: 
        !           225: 2 /OPTIMIZE
        !           226: 
        !           227:  /[NO]OPTIMIZE
        !           228: 
        !           229:  Controls whether optimization  is  performed  by  the  compiler.   By
        !           230:  default, optimization is on.  /NOOPTIMIZE turns optimization off.
        !           231: 
        !           232: 2 /PLUS
        !           233: 
        !           234:  Instructs the compiler driver to use the GNU-C++ compiler instead  of
        !           235:  the  GNU-C compiler.  Note that the default extension of source files
        !           236:  is .CC when this qualifier is in effect.
        !           237: 
        !           238: 2 /PROFILE
        !           239: 
        !           240:  /PROFILE[=identifier]
        !           241: 
        !           242:  Instructs the compiler to generate function profiling code.  You must
        !           243:  link  your  program  to  the profiler when you use this options.  The
        !           244:  profile statistics are automatically  printed  out  on  the  terminal
        !           245:  during  image  exit.  (i.e.  no modifications to your source file are
        !           246:  required in order to use the profiler).
        !           247: 
        !           248:  There are three identifiers  that  can  be  used  with  the  /PROFILE
        !           249:  switch.   These  are  ALL, FUNCTION, and BLOCK.  If /PROFILE is given
        !           250:  without an identifier, then FUNCTION is assumed.
        !           251: 
        !           252: 3 Block_Profiler
        !           253: 
        !           254:  The block profiler counts how  many  times  control  of  the  program
        !           255:  passes certain points in your program.  This is useful in determining
        !           256:  which  portions  of  a  program  would  benefit  from  recoding   for
        !           257:  optimization.
        !           258: 
        !           259:  The report for the block profiler contains the  function  name,  file
        !           260:  name, PC, and the source file line number as well as the count of how
        !           261:  many times control has passed through the specified source line.
        !           262: 
        !           263: 3 Function_Profiler
        !           264: 
        !           265:  The function profiler counts how many times each function is entered,
        !           266:  and keeps track of how much CPU time is used within each function.
        !           267: 
        !           268:  You should be careful about  interpreting  the  results  of  profiles
        !           269:  where  there  are  inline  functions.  When a function is included as
        !           270:  inline, then there is no call to the internal data collection routine
        !           271:  used  by  the  profiler,  and  thus  there  will be no record of this
        !           272:  function being called.  The compiler does generate a callable version
        !           273:  of each inline function, and if this called version is used, then the
        !           274:  profiler's data collection routine will be called.
        !           275: 
        !           276: 2 /SCAN
        !           277: 
        !           278:  /SCAN=(file[,file...])
        !           279: 
        !           280:  This qualifier supplies a list of files that will be read  as  input,
        !           281:  and  the output will be discarded before processing the regular input
        !           282:  file.  Because the output generated from the files is discarded,  the
        !           283:  only  effect  of  this qualifier is to make the macros defined in the
        !           284:  files available for use in the main input.
        !           285: 
        !           286: 2 /SHOW
        !           287: 
        !           288:  /SHOW[=option]
        !           289: 
        !           290:  This causes the preprocessor to generate information other  than  the
        !           291:  preprocessed  input  file.   When this qualifier is used, no assembly
        !           292:  code and no object file is generated.
        !           293: 
        !           294:  The output of the preprocessor is placed in the file specified by the
        !           295:  /LIST  qualifier, if present.  If the /LIST qualifier is not present,
        !           296:  then the output is placed in a file with the same name as  the  input
        !           297:  file  with  an  extension  that  depends  upon  which  option that is
        !           298:  selected.
        !           299: 
        !           300: 3 DEFINITIONS
        !           301: 
        !           302:  This option causes the preprocessor to dump a  list  of  all  of  the
        !           303:  definitions  to  the  output  file.   This  is  useful  for debugging
        !           304:  purposes, since it lets you determine whether or not  everything  has
        !           305:  been defined properly.
        !           306: 
        !           307:  If the default file name is used for the output, the  extension  will
        !           308:  be .DEF.
        !           309: 
        !           310: 3 RULES
        !           311: 
        !           312:  This option causes the preprocessor to output  a  rule  suitable  for
        !           313:  MAKE,  describing  the  dependencies  of  the  main source file.  The
        !           314:  preprocessor outputs one MAKE rule containing the  object  file  name
        !           315:  for  that  source  file,  a colon, and the names of all the concluded
        !           316:  files.  If there are many included files then the rule is split  into
        !           317:  several lines using the '\'-newline.
        !           318: 
        !           319:  When using this option, only files included with the "#include "file"
        !           320:  directive are mentioned.
        !           321: 
        !           322:  If the default file name is used for the  output,  a  null  extension
        !           323:  will be used.
        !           324: 
        !           325: 3 ALL
        !           326: 
        !           327:  This option is similar to RULES, except that it also  mentions  files
        !           328:  included with the "#include <file.h>" directive.
        !           329: 
        !           330:  If the default file name is used for the  output,  a  null  extension
        !           331:  will be used.
        !           332: 
        !           333: 2 /UNDEFINE
        !           334: 
        !           335:  /UNDEFINE cancels a macro definition.  Thus, it is the  same  as  the
        !           336:  #undef preprocessor directive.
        !           337: 
        !           338:  If more than one /UNDEFINE is present on the GCC command  line,  only
        !           339:  the last /UNDEFINE is used.
        !           340: 
        !           341:  If both /DEFINE and /UNDEFINE are present on a command line,  /DEFINE
        !           342:  is evaluated before /UNDEFINE.
        !           343: 
        !           344: 2 /VERBOSE
        !           345: 
        !           346:  Controls whether the user sees the invocation command strings for the
        !           347:  preprocessor,  compiler,  and  assembler.   The compiler also outputs
        !           348:  some statistics on time spent in its various phases.
        !           349: 
        !           350: 2 /VERSION
        !           351: 
        !           352:  Causes the preprocessor and the compiler to  identify  themselves  by
        !           353:  their  version  numbers, and in the case of the compiler, the version
        !           354:  number of the compiler that built it.
        !           355: 
        !           356: 2 /WARNING
        !           357: 
        !           358:  When this qualifier is present, warnings about usage that  should  be
        !           359:  avoided  are given by the compiler.  For more information, see "Using
        !           360:  and Porting GNU CC", in the section on command  line  options,  under
        !           361:  "-Wall".
        !           362: 
        !           363:  Warnings are also generated by the preprocessor when  this  qualifier
        !           364:  is given.
        !           365: 
        !           366: 2 Known_Incompatibilities_with_VAX-C
        !           367: 
        !           368:  There are several known incompatibilities between  GNU-C  and  VAX-C.
        !           369:  Some  common  ones  will  be  briefly  described  here.   A  complete
        !           370:  description can be found in "Using and Porting GNU CC" in the chapter
        !           371:  entitled "Using GNU CC on VMS".
        !           372: 
        !           373:      GNU-C provides case hacking as a means of giving case sensitivity
        !           374:  to  symbol  names.  The case hack is a hexadecimal number appended to
        !           375:  the symbol name, with a bit being set for  each  upper  case  letter.
        !           376:  Symbols with all lower case, or symbols that have a dollar sign ("$")
        !           377:  are not case hacked.  There  are  times  that  this  is  undesirable,
        !           378:  namely  when  you  wish  to  link  your program against a precompiled
        !           379:  library which was compiled with a non-GNU-C compiler.  X-windows  (or
        !           380:  DECWindows)   is  an  example  of  this.   In  these  instances,  the
        !           381:  /NOCASE_HACK switch should be used.
        !           382: 
        !           383:  If you require case hacking in some cases, but not  in  others  (i.e.
        !           384:  Libg++  with  DECWindows),  then it is recommended that you develop a
        !           385:  header file which will define all mixed case  functions  that  should
        !           386:  not have a case hack as the lower case equivalents.
        !           387: 
        !           388:      GNU-C does not provide  the  globaldef  and  globalref  mechanism
        !           389:  which  is  used  by VAX-C to coerce the VMS linker to include certain
        !           390:  object modules from a library.  There are assembler hacks, which  are
        !           391:  available  to  the  user  through  the macros defined in gnu_hacks.h,
        !           392:  which effectively give you the ability to  perform  these  functions.
        !           393:  While  not  syntactically  identical,  they  do  provide  most of the
        !           394:  functionality.
        !           395: 
        !           396:  Note that globaldefs of enums is not supported in the way that it  is
        !           397:  under  VAX-C.  This can be easily simulated, however, by globaldefing
        !           398:  an integer variable, and then globalvaluing  all  of  the  enumerated
        !           399:  states.
        !           400: 
        !           401:  Furthermore, the way that globalvalue is currently  implemented,  the
        !           402:  data type of the globalvalue variable is seen to the compiler to be a
        !           403:  pointer to the data type that you  specify.   This  is  necessary  in
        !           404:  order   to  make  the  compiler  correctly  address  the  globalvalue
        !           405:  variables.
        !           406: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.