178 lines
4.7 KiB
Groff
178 lines
4.7 KiB
Groff
|
||
|
||
CC(1) Minix Programmer's Manual CC(1)
|
||
|
||
|
||
NAME
|
||
cc - C compiler
|
||
|
||
SYNOPSIS
|
||
cc [-STOUfcimos] [-w[aos]] [-v[n]] [-Dname]* [-Idir]* [-Ldir]* file+
|
||
[-lname]*
|
||
|
||
OPTIONS
|
||
|
||
-D The flag -Dx[=y] defines a macro x with (optional) value y
|
||
|
||
-I -Idir searches dir for include files
|
||
|
||
-L -Ldir searches dir for -lname libraries
|
||
|
||
-O Optimize the code
|
||
|
||
-S Produce an assembly code file, then stop
|
||
|
||
-T The flag -Tdir tells cc and as to use dir for temporary files
|
||
|
||
-U Undefine a macro
|
||
|
||
-E Preprocess to standard output
|
||
|
||
-c Compile only. Do not link
|
||
|
||
-f Link with floating point emulation library
|
||
|
||
-i Use separate I & D space (64K + 64K) ( only)
|
||
|
||
-l The flag -lname causes the library libname.a to be linked
|
||
|
||
-m Remove unnecessary prototypes after preprocessing ( only)
|
||
|
||
-o Put output on file named by next arg
|
||
|
||
-s Strip the symbol-table from executable file
|
||
|
||
-v Verbose; print pass names
|
||
|
||
-vn Verbose; print pass names but do not run them
|
||
|
||
-w Suppress warning messages
|
||
|
||
-ws Suppress strict messages
|
||
|
||
-wa Suppress all warning and strict messages
|
||
|
||
|
||
|
||
|
||
1
|
||
|
||
|
||
|
||
CC(1) Minix Programmer's Manual CC(1)
|
||
|
||
|
||
-wo Suppress messages about old-style
|
||
|
||
-.o Do not link the default run-time start-off
|
||
|
||
EXAMPLES
|
||
|
||
cc -c file.c # Compile file.c
|
||
|
||
cc -DFOO file.c # Treat the symbol FOO as defined
|
||
|
||
cc -wo -o out file.c
|
||
# Compile old-style code; output to out
|
||
|
||
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.
|
||
|
||
|
||
2
|
||
|
||
|
||
|
||
CC(1) Minix Programmer's Manual CC(1)
|
||
|
||
|
||
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).
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
3
|
||
|