c89 - Standard C Compiler
c89 [-c] [-D name [=value]]... [-E] [-g] [-I directory]...
[-L directory]... [-o outfile] [-O] [-s] [-U name]...
Interfaces documented on this reference page conform to
industry standards as follows:
c89: XPG4, XPG4-UNIX
Refer to the standards(5) reference page for more information
about industry standards and associated tags.
The following options are defined by the XPG4-UNIX standard.
However, the compiler can also recognize the
options defined in cc(1). Unlike cc(1), c89 includes the
-std1 option by default (for ANSI C standards checking).
To check for full compliance to XPG4-UNIX, you must also
specify -D_XOPEN_SOURCE_EXTENDED. See standards(5) for
more information. Suppress the loading phase of the compilation
and force an object file to be produced. Produce
symbol table information for full symbolic debugging and
suppress optimizations that limit full symbolic debugging.
Symbol types and stack-frame variables names are available.
Global optimizations are not performed. Instruction
scheduling does not span source line boundaries. Trap
instructions are inserted to ensure that exceptions are
reported on the source lines that caused them to be generated.
Remove the symbol table and relocation bits to save
space (this impairs the usefulness of the debuggers).
This information can also be removed by strip(1). Name
the final output file output. If this option is used, the
file a.out is undisturbed. Define the name as if with a
#define statement. If no definition is given, the name is
defined as 1. Run only the C macro preprocessor on the
files and send the result to the standard output device.
Specifies that #include files whose names do not begin
with / are always sought first in the directory of the
file argument, then in directories specified in -I
options, and finally in the standard directory,
/usr/include. Adds dir to the list of directories that
are searched for libraries. Directories specified with -L
are searched before the standard directories. Enable
global optimization, including code motion, strength
reduction and test replacement, split lifetime analysis,
and code scheduling. Remove any definition of name previously
defined with the -D option.
Compiles source code in conformance with the XPG4-UNIX
The c89 command can process one or more of the following
types of "file" arguments: Files whose names end with are
assumed to be C source programs. They are compiled, and
each object program is left in the file whose name
consists of the last component of the source with substituted
for file is deleted only when a single source program
is compiled and linked in a single step. Files whose
names end with are assumed to be libraries of object
files. These files are passed directly to the linker.
Files whose names end with are assumed to be object files
produced by a previous c89 command. These files are also
passed directly to the linker.
The c89 command can take other types of file arguments,
although they are not part of the standard specification.
See cc(1) for a description of the other file types.
When the compiler is invoked, it defines the following C
preprocessor macros that identify the language of the
input files and the environments in which the code can
You can reference these macros in #ifdef statements to
isolate code that applies to a particular language or
The diagnostics produced by c89 are intended to be selfexplanatory.
Occasional messages may be produced by the
assembler or loader.
Compiles helloworld.c and produces the executable file
helloworld.c c89 -o helloworld helloworld.c Compiles helloworld.c
and creates the object file helloworld.o. c89
-c helloworld.c Compiles a.c and b.c, producing a.o and
b.o. The object files main.o, a.o, and b.o are then linked
together, using the library /a/b/c/libQ.a to resolve any
references in a.o, and /a/b/c/libp.a to resolve any references
in b.o. The executable program is placed in the
file a.out. Only one -L option is needed because libQ.a
and libp.a reside in the same directory. c89 -L /a/b/c
main.o a.c -l Q b.c -l p
ENVIRONMENT VARIABLES [Toc] [Back]
The following environment variables affect compiler operation:
Provides a default value for locale variables that
are not set. If any of these variables contains an
invalid setting, the compiler behaves as if none were set.
If set to a non-empty string, this variable overrides values
in all locale variables, including LANG. Determines
the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte characters
instead of multi-byte characters in arguments and
input files). Determines the locale used for diagnostic
messages. Determines the locale of message catalogs for
the processing of LC_MESSAGES. Provides a pathname that
overrides the default directory for temporary files, if
For more information on these environment variables, see
i18n_intro(5) and l10n_intro(5).
Input file Object file Loaded output Compiler error messages
in English Temporary Compiler configuration file
(optional) C front end C macro preprocessor DEC C compiler
Binary ucode and symbol table joiner Ucode loader Binary
ucode and symbol table splitter Procedure integrator
Optional global ucode optimizer Post-link optimizer Code
generator Symbolic to binary assembly language translator
Binary assembly language assembler and reorganizer Runtime
startup Startup for profiling Standard library, see
intro(3) Level 1 profiling library Standard directory for
#include files Interface between prof and cord Procedure
rearranger Binary-to-symbolic ucode translator Symbolicto-binary
ucode translator File produced for analysis by
prof File produced for analysis by gprof
Commands: as(1), cc(1), ld(1)
Other: i18n_intro(5), l10n_intro(5), standards(5)
Guides: ANSI X3.159-1989
B. W. Kernighan and D. M. Ritchie, The C Programming Language
B. W. Kernighan, Programming in C -- a tutorial
D. M. Ritchie, C Reference Manual
Assembly Language Programmer's Guide
Compaq C Language Reference Manual
[ Back ]