pcpp1
Front-end to the c compiler
Usage
cc [-cEgkMPSstvX]
[-ansi]
[-Bprefix]
[-D
macro
[=value]]
[-dflags]
[-ffeature]
[-I
path]
[-include
file]
[-isystem
path]
[-Lpath]
[-moption]
[-nodefaultlibs]
[-nostartfiles]
[-nostdinc]
[-nostdlib]
[-O
[level]]
[-o
outfile]
[-pg]
[-pthread]
[-shared]
[-static]
[-std=standard]
[-U
macro]
[-Wa,options]
[-Wc,options]
[-Wl,options]
[-Wp,options]
[-x
language]
[-z
keyword]
[file ...]
Overview
The cc utility provides a front-end to the “portable C compiler”. Multiple files may be given on the command line. Unrecognized options are 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:
-
-ansi -
Synonym for
-std=c89. -
-C -
Passed to the cpp(1) preprocessor to not discard comments.
-
-c -
Stop after generating object code with as(1). Do not link. The resulting object output is saved as a filename with a “.o” suffix unless
-ooption is used. Note: cannot be combined with-oif multiple files are given. -
-D macro[=value] -
Passed to the cpp(1) preprocessor to define macro with an optional value.
-
-dflags -
Debug options. flags is a string of characters, which signify the following actions.
- M
-
Cause the preprocessor to output a list of macro definitions.
any unknown flags are ignored.
-
-E -
Stop after preprocessing with cpp(1). Do not compile, assemble, or link. Output is sent to standard output unless the
-ooption is used. -
-ffreestanding -
Assume a freestanding environment.
-
-fPIC -
Generate PIC code.
-
-fpic -
Tells C compiler to generate PIC code and tells assembler that PIC code has been generated.
-
-funsigned-char -
Tell the compiler to treat ‘char’ types as if they were unsigned unless explicitly defined otherwise.
-fsigned-charcan be used to signify the opposite behaviour. The default for the ‘char’ type depends on the compiler target architecture. -
-fstack-protector -
Tell the compiler to wrap functions with code which checks at runtime that a stack overflow has not occurred. When stack protection is in effect, the __SSP__ macro will be defined.
-
-g -
Send
-gflag to ccom(1) to create debug output. Debug information output can be disabled with-g0. -
-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
-fpicoption. -
-Lpath -
Passed to the linker, to add path to the list of directories searched for shared libraries.
-
-moption -
Target-dependent options. Multiple
-moptions can be given, the following are supported:- 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
-
-nodefaultlibs -
Do not link with the system default libraries (libc, etc.)
-
-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 default libraries or startup files.
-
-O[level] -
Enable compiler optimizations. Currently, for levels higher than zero, this defines __OPTIMIZE__ in the cpp(1) preprocessor, and passes
-xdce,-xdeljumps,-xtempsand-xinlineto ccom(1). If no level is given the optimization level is-O1. Optimizations can be disabled using-O0. In situations where multiple optimization flags are given, the last flag is the one used. -
-o outfile -
Save result to outfile.
-
-P -
Inhibit generation of line markers in preprocessor output. This is sometimes useful when running the preprocessor on something other than C code.
-
-pg -
Enable profiling on the generated executable.
-
-pthread -
Defines the _PTHREADS preprocessor identifier for cpp(1), and adds
-lpthreadto the ld(1) linker arguments. -
-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
-ooption is used. Note: cannot be combined with-oif multiple files are given. -
-s -
Passed to ld(1) to remove all symbol table and relocation information from the generated executable. This option is silently ignored if
ccdoes not invoke the linker. -
-static -
Do not use dynamic linkage. By default, it will link using the dynamic linker options and/or shared objects for the platform.
-
-std=standard -
Compile to the specified standard. Accepted values for standard are c89, c99, gnu89, gnu99, gnu9x, and c11.
-
-t -
Passed to cpp(1) to suppress some default macro definitions and enable use of traditional C preprocessor syntax.
-
-U macro -
Passes to the cpp(1) preprocessor to remove the initial macro definition.
-
-v -
Outputs the version of
ccand shows commands as they are run with their command line arguments. -
-### -
As per
-vexcept that the commands are not run, and the arguments will be quoted if they contain unusual characters or spaces. -Wa,options-
Comma separated list of options for the assembler.
-Wc,options-
Comma separated list of options for the compiler.
-Wl,options-
Comma separated list of options for the linker.
-Wp,options-
Comma separated list of options for the preprocessor.
-
-X -
Don't remove temporary files on exit.
-
-x language -
GCC compatibility option; specify the language in use rather than interpreting the filename extension. Currently known language values are
none,c,c++,assemblerandassembler-with-cpp. Any unknown-xoptions are passed to ccom(1). -
-z keyword -
Passed to ld(1). Please refer to the documentation of your linker for acceptable values of keyword.
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
-voption. - __PCC_MINOR__
-
Set to the minor version.
- __PCC_MINORMINOR__
-
Set to the minor-minor version — the number after the minor version.
- _PTHREADS
-
Defined when
-pthreadswitch is used. - __ASSEMBLER__
-
Defined when input files have a .S suffix, or if the
-xassembler-with-cpp option is specified.
Also system- and/or machine-dependent macros may also be predefined; for example: __NetBSD__, __ELF__, and __i386__.
Releases
Unchanged in 4 releases since Debian 10 (Buster).