CC(1)

NAME
cc - C compiler

SYNOPSIS
cc [-STOUfcimos] [-w[aos]] [-v[n]] [-Dname]* [-Idir]* [-Ldir]* file+ [-lname]*

OPTIONS

EXAMPLES

DESCRIPTION

This is the C compiler. It has eight passes, as follows:

   Program    Input    Output    Operation performed
   lib/ncpp    prog.c    prog.i    C preprocessor: #include, #define, #ifdef
   lib/irrel    prog.i    prog.i    Removal of unnecessary prototypes
   lib/ncem    prog.i    prog.k    Parsing and semantic analysis
   lib/nopt    prog.k    prog.m    Optimization of the intermediate code
   lib/ncg    prog.m    prog.s    Code generation
   bin/as    prog.s    prog.o    Assembly
   lib/ld    prog.o    prog.out    Linking
   lib/cv    prog.out    a.out    Conversion to MINIX a.out format

In the 68000 versions of MINIX , the preprocessor is not called since the front-end contains the preprocessor. This increases compilation speed.

The main program, cc , forks appropriately to call the passes, transmitting flags and arguments. The -v flag causes the passes to be listed as they are called, and the -vn flag causes the passes to be listed but not called.

The libraries should be made with aal (which is the same as ar on the 68000 versions), and consist of .o files. The internal order of files inside the library is unimportant, but the order in which the libraries are specified is.

When -T is used, the intermediate files end up in the directory specified. Otherwise, /tmp is used. When available memory is very limited (e.g., a 512K machine), it may be necessary to run chmem to reduce the sizes of the compiler passes that do not fit, typically ncem .

On the other hand, if the compiler (or, in fact, almost any program) begins acting strange, it is almost always due to its running out of space, either stack space or scratch file space. The relevant pass can be given more stack space using chmem . More space for scratch files can be obtained by removing other files on the device.

If the compiler runs out of memory, it may be necessary to use the -m flag. This causes irrel to be run, which removes unnecessary prototypes and thus frees up extra table space within the compiler. Beware, however, that running this pass may cause strictly conforming programs to become non-conforming and vice versa, so you should only run this pass as a last resort.

The compiler is derived from the ACK system (Tanenbaum et al., Communications of the ACM, Sept. 1983), not from the AT&T portable C compiler. It has been shoehorned onto the PC with some loss of performance.

SEE ALSO
make(1).