CC(1)

NAME
cc - front-end to the C compiler

SYNOPSIS
cc [-cEgkLMPOStvXx] [-fPIC] [-fpic] [-moption] [-nostartfiles] [-nostdinc] [-nostdlib] [-pg] [-pthread] [-static] [-B prefix] [-D macro[=value]] [-d option] [-I directory] [-include path] [-isystem path] [-o outfile] [-Wl flags] [file ...]

DESCRIPTION
The cc utility provides a front-end to the “portable C compiler”. Multiple files may be given on the command line. Unrecognized options are all sent directly to ld(1).

Filenames that end with.c are passed via cpp(1) → ccom(1) → as(1) → ld(1).

Filenames that end with.i are passed via ccom(1) → as(1) → ld(1).

Filenames that end with.s are passed via as(1) → ld(1).

Filenames that end with.S are passed via cpp(1) → as(1) → ld(1).

Filenames that end with.o are passed directly to ld(1).

The options are as follows:

-B prefix
    Define alternate prefix path for cpp(1), ccom(1), as(1), or ld(1) executables.

-C  Passed to the cpp(1) preprocessor to not discard comments.

-c  Only compile or assemble and then stop. Do not link. The resulting object output is saved as a filename with a “.o” suffix unless -o option is used. Note: cannot be combined with -o if multiple files are given.

-D macro[=value]
    Passed to the cpp(1) preprocessor to define macro.

-d option
    Passed to the as(1) assembler.

-E  Stop after preprocessing with cpp(1). Do not compile, assemble, or link. Output is sent to standard output unless the -o option is used.

-fPIC
    Generate PIC code.

-fpic
    Tells C compiler to generate PIC code and tells assembler that PIC code has been generated.

-g  Send -g flag to ccom(1) to create debug output. This unsets the -O option.

-I path
    Passed to the cpp(1) preprocessor to add header search directory to override system defaults.

-include file
    Tells the cpp(1) preprocessor to include the file during preprocessing.

-isystem path
    Defines path as a system header directory for the cpp(1) preprocessor.

-k  Generate PIC code. See -fpic option.

-L  TODO

-M  Pass -M flag to cpp(1) to generate dependencies for make(1).

-moptions
    Target-dependent option.

    ARM -mlittle-endian -mbig-endian -mfpe=fpa -mfpe=vpf -msoft-float -march=armv1 -march=armv2 -march=armv2a -march=armv3 -march=armv4 -march=armv4t -march=armv4tej -march=armv5 -march=armv6 -march=armv6t2 -march=armv6kz -march=armv6k -march=armv7

    HPPA

    i386

    MIPS
        -mlittle-endian -mbig-endian -mhard-float -msoft-float

    PDP-10

    PowerPC

    Sparc64

    VAX

-nostartfiles
    Do not link with the system startup files (crt0.c, etc.)

-nostdinc
    Do not use the system include paths (/usr/include, etc.)

-nostdlib
    Do not link with the system C library (libc).

-O  Enable optimizations. Currently passes -xdeljumps and -xtemps to ccom(1). Note: this is unset if the -g option is used.

-o outfile
    Save result to outfile.

-P  TODO

-pg Enable profiling on the generated executable.

-pthread
    Defines _PTHREADS preprocessor directive for cpp(1). Uses -lpthread for the ld(1) linker.

-S  Stop after compilation by ccom(1). Do not assemble and do not link. The resulting assembler-language output is saved as a filename with a “.s” suffix unless the -o option is used. Note: cannot be combined with -o if multiple files are given.

-static
    Do not use dynamic linkage. By default, it will link using the dynamic linker options and/or shared objects for the platform.

-shared
    Create a shared object of the result. Tells the linker not to generate an executable.

-t  Passes -t to cpp(1) for traditional C preprocessor syntax.

-U macro
    Passes to the cpp(1) preprocessor to remove the initial macro definition.

-v  Outputs the version of cc and shows what commands will be run with their command line arguments.

-Wl flags
    Options for the linker.

-X  Don't remove temporary files on exit.

-x  May be used to give separate optimization flags to ccom, see -O for options.

-x c
    Gcc compatibility option; specify that the language in use is c.

  Predefined Macros
A few macros are predefined by cc when sent to cpp(1).

__PCC__ Set to the major version of pcc(1). These macros can be used to select code based on pcc(1) compatibility. See the -v option.

__PCC_MINOR__ Set to the minor version.

__PCC_MINORMINOR__ Set to the minor-minor version — the number after the minor version.

_PTHREADS Defined when -pthread switch is used.

Also system- and/or machine-dependent macros may also be predefined; for example: __NetBSD__, __ELF__, and __i386__.

SEE ALSO
as(1), ccom(1), cpp(1), ld(1)

HISTORY
The cc command comes from the original Portable C Compiler by S. C. Johnson, written in the late 70's.

This product includes software developed or owned by Caldera International, Inc.