2.2 Invoking the Compiler

The remainder of this chapter discusses the conventions used by the CC
command, compiler source line directives, and other issues concerning the use of the
compiler.

2.2.1 Command Syntax

The general syntax of a compiler command line is as follows:

CC [options] [source-files] [object-files] [libraries]

An option is an option keyword prefixed by either a dash (–) or
a plus sign (+). Some options take arguments.

In general, the processing of the compiler options is from left to
right, allowing selective overriding of macro options (options that include other options). In most
cases, if you specify the same option more than once, the rightmost assignment
overrides and there is no accumulation. Note the following exceptions:

Source files, object files, and libraries are compiled and linked in the order
in which they appear on the command line.

In the following example, CC is used to compile two source files (growth.C
and fft.C) to produce an executable file named growth with runtime debugging enabled:

example% CC -g -o growth growth.C fft.C

2.2.2 File Name Conventions

The suffix attached to a file name appearing on the command line determines
how the compiler processes the file. A file name with a suffix other
than those listed in the following table, or without a suffix, is passed
to the linker.

Table 2-1 File Name Suffixes Recognized by the C++ Compiler

Suffix

Language

Action

.c

C++

Compile as C++ source files, put object files
in current directory; default name of object file is that of the source
but with an .o suffix.

Assemble source files using both the C
language preprocessor and the assembler.

.il

Inline expansion

Process assembly inline-template files for inline expansion. The
compiler will use templates to expand inline calls to selected routines. (Inline-template files are
special assembler files. See the inline(1) man page.)

.o

Object files

Pass object files through to
the linker.

.a

Static (archive) library

Pass object library names to the linker.

.so

.so.n

Dynamic (shared) library

Pass
names of shared objects to the linker.

2.2.3 Using Multiple Source Files

The C++ compiler accepts multiple source files on the command line. A single
source file compiled by the compiler, together with any files that it directly
or indirectly supports, is referred to as a compilation unit. C++ treats each
source as a separate compilation unit.