PCC(1)PCC(1)

NAME

pcc – APE C compiler driver

SYNOPSIS

pcc [ option ... ] [ name ... ]

DESCRIPTION

Pcc compiles and loads C programs, using APE (ANSI C/POSIX) include files and libraries. Named files ending with .c are preprocessed with cpp(1), then compiled with one of the compilers described in 2c(1), as specified by the environment variable $objtype. The object files are then loaded using one of the loaders described in 2l(1). The options are:

-o out

Place loader output in file out instead of the default 2.out, v.out, etc.  

-P

Omit the compilation and loading phases; leave the result of preprocessing name.c in name.i.  

-E

Like -P, but send the result to standard output.  

-c

Omit the loading phase.  

-p

Insert profiling code into the executable output.  

-w

Print compiler warning messages.  

-llib

Include /$objtype/lib/ape/liblib.a as a library during the linking phase.  

-B

Don’t complain about functions used without ANSI function prototypes.  

-V

Enable void* conversion warnings, as in 2c(1).  

-v

Echo the preprocessing, compiling, and loading commands before they are executed.  

-Dname=def


 

unhandled troff command .ns

-Dname

Define the name to the preprocessor, as if by #define. If no definition is given, the name is defined as 1.  

-Uname

Undefine the name to the preprocessor, as if by #undef.  

-Idir

#include files whose names do not begin with / are always sought first in the directory of the file argument, then in directories named in -I options, then in /$objtype/include/ape.  

-N

Don’t optimize compiled code.  

-S

Print an assembly language version of the object code on standard output.  

-a

Instead of compiling, print on standard output acid functions (see acid(1)) for examining structures declared in the source files.  

-aa

Like -a except that functions for structures declared in included header files are omitted.  

-F

Enable vararg type checking as described in 2c(1). This is of limited use without the appropriate #pragma definitions.  

The APE environment contains all of the include files and library routines specified in the ANSI C standard (X3.159-1989), as well as those specified in the IEEE Portable Operating System Interface standard (POSIX, 1003.1-1990, ISO 9945-1). In order to access the POSIX routines, source programs should define the preprocessor constant _POSIX_SOURCE.

FILES

/sys/include/ape

directory for machine-independent #include files.  

/$objtype/include/ape

directory for machine-dependent #include files.  

/$objtype/lib/ape/libap.a

ANSI C/POSIX library.  

SEE ALSO

cpp(1), 2c(1), 2a(1), 2l(1), mk(1), nm(1), acid(1), db(1), prof(1)

Howard Trickey, “APE The ANSI/POSIX Environment”

SOURCE

/sys/src/cmd/pcc.c

BUGS

The locale manipulation functions are minimal. Signal functions and terminal characteristic handlers are only minimally implemented. Link always fails, because Plan 9 doesn’t support multiple links to a file. The functions related to setting effective user and group ids cannot be implemented because the concept doesn’t exist in Plan 9.