Annotation of researchv10no/cmd/lcc/etc/cc.1, revision 1.1.1.1

1.1       root        1: .TH CC 1
                      2: .CT 1 prog_c
                      3: .SH NAME
                      4: cc, lcc \- C compilers
                      5: .SH SYNOPSIS
                      6: .B cc
                      7: [
                      8: .I option ...
                      9: ]
                     10: .I file ...
                     11: .PP
                     12: .B lcc
                     13: [
                     14: .I option ...
                     15: ]
                     16: .I file ...
                     17: .SH DESCRIPTION
                     18: .I Cc
                     19: compiles the classic C language;
                     20: .I lcc
                     21: compiles
                     22: .SM ANSI.
                     23: They are otherwise similar.
                     24: In the absence of options, any named source
                     25: .I files
                     26: are compiled into object files and then linked,
                     27: together with any named object
                     28: .I files,
                     29: into a single executable file named 
                     30: .FR a.out .
                     31: Compilation normally has four phases: preprocessing of
                     32: .B #
                     33: directives, compilation to assembly language, assembly,
                     34: and linking.
                     35: Suffixes of
                     36: .I file
                     37: names determine which phases they participate in:
                     38: .TP
                     39: .B .c
                     40: C source to be preprocessed and compiled.
                     41: Object code for this file is finally placed in a
                     42: correspondingly named
                     43: .L .o
                     44: file, except when exactly one file is being compiled and linked.
                     45: .TP
                     46: .B .i
                     47: C source to be compiled without preprocessing;
                     48: .B #
                     49: directives are ignored by
                     50: .I cc,
                     51: forbidden by
                     52: .I lcc.
                     53: .TP
                     54: .B .s
                     55: Assembler source to be assembled, producing a
                     56: .L .o
                     57: file.
                     58: .TP
                     59: .B .o
                     60: A preexisting object file to be linked.
                     61: .PP
                     62: Both compilers accept options of
                     63: .IR ld (1),
                     64: the most common of which are
                     65: .B -o
                     66: (to substitute a name for
                     67: .BR a.out )
                     68: and
                     69: .BR -l 
                     70: (to link from a library), and in addition
                     71: .TP
                     72: .B -c
                     73: Suppress the linking phase, producing
                     74: .B .o
                     75: files but no
                     76: .BR a.out .
                     77: .TP
                     78: .B -g
                     79: Produce additional symbol table information
                     80: for debuggers such as
                     81: .IR pi (9.1).
                     82: .TP
                     83: .B -O
                     84: Invoke an
                     85: object-code improver; superfluous in
                     86: .I lcc.
                     87: .TP
                     88: .B -w
                     89: Suppress warning diagnostics.
                     90: In
                     91: .I lcc,
                     92: .B #pragma ref
                     93: .I variable
                     94: supplies a dummy reference to suppress
                     95: an unused-variable diagnostic.
                     96: .TP
                     97: .B -p
                     98: Arrange for the compiler to produce code
                     99: which counts the number of times each routine is called;
                    100: also, if linking takes place, replace the standard startup
                    101: routine by one which arranges to gather profiling data
                    102: for later examination by
                    103: .IR  prof (1).
                    104: .TP
                    105: .B -pg
                    106: Like
                    107: .B -p
                    108: but for
                    109: .IR gprof 
                    110: instead of
                    111: .IR prof (1).
                    112: .TP
                    113: .B -S
                    114: Compile the named C programs, and leave the
                    115: assembler-language output in
                    116: .B .s
                    117: files.
                    118: .TP
                    119: .B -E
                    120: Run the preprocessor
                    121: on the named C programs, and send the result to the
                    122: standard output.
                    123: .TP
                    124: .B -C
                    125: Prevent the preprocessor from eliding comments.
                    126: .TP
                    127: .BI -D\*S name=def
                    128: .br
                    129: .ns
                    130: .TP
                    131: .BI -D \*Sname
                    132: Define the
                    133: .I name
                    134: to the preprocessor,
                    135: as if by
                    136: .LR #define .
                    137: If no definition is given, the name is defined as
                    138: .LR 1 .
                    139: .I Lcc
                    140: predefines a few symbols on most machines; option
                    141: .B -v
                    142: exposes them.
                    143: .TP
                    144: .BI -U \*Sname
                    145: Remove any initial definition of
                    146: .IR name .
                    147: .TP
                    148: .BI -I \*Sdir
                    149: .L #include
                    150: files whose names do not begin with 
                    151: .L /
                    152: are always
                    153: sought first in the directory 
                    154: of the
                    155: .I file
                    156: argument,
                    157: then in directories named in 
                    158: .B -I
                    159: options,
                    160: then in directories on a standard list.
                    161: .PP
                    162: These options are peculiar to
                    163: .IR cc :
                    164: .TP
                    165: .B -P
                    166: Run the preprocessor on each 
                    167: .L .c
                    168: file.
                    169: Produce no line numbers.
                    170: Place results in
                    171: .L .i
                    172: files.
                    173: .TP
                    174: .B -R
                    175: Cause
                    176: .IR as (1)
                    177: to make initialized variables shared and read-only.
                    178: .TP
                    179: .BI -B \*Sstring
                    180: Find substitute compiler passes in the files named
                    181: .I string
                    182: with the suffixes cpp, ccom and c2.
                    183: If 
                    184: .I string 
                    185: is empty, use a standard backup version.
                    186: .TP
                    187: .BR -t [ p012 ]
                    188: Find only the designated compiler passes in the
                    189: files whose names are constructed by a
                    190: .B -B
                    191: option.
                    192: In the absence of a
                    193: .B -B 
                    194: option, the
                    195: .I string
                    196: is taken to be
                    197: .FR /usr/c/ .
                    198: .PP
                    199: These options are peculiar to
                    200: .IR lcc :
                    201: .TP
                    202: .B -N
                    203: Do not search standard directories for include files.
                    204: Omit non-ANSI language extensions.
                    205: .TP
                    206: .B -A
                    207: Warn about calls to functions without prototypes.
                    208: .TP
                    209: .B -b
                    210: produce code that writes an expression-level profile into prof.out.
                    211: .IR bprint (1)
                    212: produces an annotated listing, and
                    213: .B -Wf-a
                    214: uses the profile to improve register assignments.
                    215: .TP
                    216: .BI \-d n
                    217: Generate jump tables for switches with density at least
                    218: .IR n ,
                    219: a floating-point constant between zero and one,
                    220: 0.5 by default.
                    221: .TP 
                    222: .B \-P
                    223: Write declarations for all defined globals on standard error.
                    224: .TP
                    225: .B \-n
                    226: Produce code
                    227: that reports and aborts upon dereferencing a zero pointer.
                    228: .TP
                    229: .B \-M
                    230: Run only the preprocessor to generate 
                    231: .IR make (1)
                    232: dependencies on the standard output.
                    233: .TP
                    234: .B \-t
                    235: Produce code to print trace messages at function entry and exit.
                    236: .TP
                    237: .BI -Wp "opt"
                    238: Pass preprocessor option
                    239: .I opt
                    240: to the (Gnu) preprocessor.
                    241: For example,
                    242: .B -Wp-T
                    243: allows
                    244: .SM ANSI
                    245: trigraph sequences.
                    246: .HP
                    247: .BI -Wa  opt,
                    248: .BI -Wl  opt,
                    249: .BI -Wf  opt
                    250: .br
                    251: Pass option
                    252: .IR opt
                    253: to the assembler
                    254: .RI ( as (1)),
                    255: loader
                    256: .RI ( ld (1)),
                    257: or compiler proper.
                    258: .TP
                    259: .BI \-B str
                    260: Use the compiler
                    261: .IB str rcc
                    262: instead of the default version.
                    263: .I Str
                    264: usually ends with a slash.
                    265: .TP
                    266: .B \-v
                    267: Report compiler steps (and some version numbers) as
                    268: they are executed.
                    269: A second
                    270: .B \-v
                    271: causes steps to be reported but not executed.
                    272: .PP
                    273: .I Lcc
                    274: supports
                    275: .BI asm( string ).
                    276: The given string constant is copied to the generated
                    277: assembly language output with occurrences of
                    278: .BI % name
                    279: replaced by the address or register for identifier 
                    280: .I name 
                    281: if it is visible.
                    282: Otherwise,
                    283: .BI % name
                    284: is simply copied to the output.
                    285: Wide-character literals are treated as plain char literals;
                    286: ints and long ints are the same size,
                    287: as are doubles and long doubles.
                    288: .SH EXAMPLES
                    289: .TP
                    290: .L
                    291: lcc -N -I/usr/include/libc file.c 
                    292: Use local include files instead of
                    293: .SM ANSI
                    294: standard ones, which lack most functions of Section 2
                    295: of this manual, and often disagree (especially about
                    296: .BR const )
                    297: with those in Section 3.
                    298: See
                    299: .IR intro (3).
                    300: .SH FILES
                    301: .PP
                    302: Different machines use different file names, so this list is
                    303: only representative.
                    304: .I Lcc
                    305: option
                    306: .B -v
                    307: exposes the correct names.
                    308: .TF /usr/include/libc
                    309: .TP
                    310: .F a.out
                    311: linked output
                    312: .TP
                    313: .F /tmp/ctm*
                    314: temporary
                    315: .TP
                    316: .F /lib/cpp
                    317: preprocessor,
                    318: .IR cpp (8)
                    319: .TP
                    320: .F /usr/lib/gcc-cpp
                    321: .SM ANSI
                    322: preprocessor
                    323: .TP
                    324: .F /lib/ccom
                    325: .I cc
                    326: compiler proper
                    327: .TP
                    328: .F /lib/c2
                    329: optional optimizer for
                    330: .I cc
                    331: .TP
                    332: .F /bin/as
                    333: assembler,
                    334: .IR as (1)
                    335: .TP
                    336: .F /usr/lib/rcc
                    337: .I lcc
                    338: compiler proper
                    339: .TP
                    340: .F /lib/crt0.o
                    341: runtime startoff
                    342: .TP
                    343: .F /lib/mcrt0.o
                    344: startoff for profiling
                    345: .TP
                    346: .F /lib/libc.a
                    347: standard library, see
                    348: .IR intro (3)
                    349: .TP
                    350: .F /usr/include
                    351: directory for 
                    352: .I cc
                    353: .L #include
                    354: files
                    355: .TP
                    356: .F /usr/include/lcc
                    357: directory for 
                    358: .SM ANSI
                    359: standard 
                    360: .L #include
                    361: files
                    362: .TP
                    363: .F /usr/include/libc
                    364: directory for local
                    365: .I lcc
                    366: include files
                    367: .SH "SEE ALSO"
                    368: .IR lint (1), 
                    369: .IR ld (1), 
                    370: .IR strip (1),
                    371: .IR nm (1),
                    372: .IR prof (1), 
                    373: .IR bprint (1), 
                    374: .IR cin (1),
                    375: .IR adb (1), 
                    376: .IR pi (9.1),
                    377: .IR c++ (1)
                    378: .br
                    379: B. W. Kernighan and D. M. Ritchie,
                    380: .I The C Programming Language,
                    381: 2nd Ed., Prentice-Hall, 1988
                    382: .SH BUGS
                    383: .I Cc
                    384: cannot handle the
                    385: .L -y
                    386: flag of
                    387: .I ld.
                    388: .br
                    389: .I Lcc
                    390: currently uses the pre-ANSI library.
                    391: .SH MACHINE DEPENDENCIES
                    392: .SS VAX
                    393: .B -pg
                    394: is unimplemented.
                    395: .br
                    396: .I Cc
                    397: and
                    398: .I lcc
                    399: use incompatible bit-field layouts and structure return conventions.
                    400: .SS MIPS
                    401: .I Lcc
                    402: does not implement
                    403: .B -p
                    404: or
                    405: .BR -pg ,
                    406: and its
                    407: .B -g
                    408: supports breakpoints but not the examination of variables.
                    409: .br
                    410: .I Cc
                    411: and
                    412: .I lcc
                    413: use incompatible bit-field layouts.
                    414: .SS Sun
                    415: .I Lcc
                    416: options
                    417: .B -Bdynamic
                    418: and
                    419: .B -Bstatic
                    420: give the binding strategy; see
                    421: .IR ld (1).
                    422: .br
                    423: .I Cc and
                    424: .I lcc
                    425: use incompatible bit-field layouts and structure return conventions.

unix.superglobalmegacorp.com

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