Quote:
If you only want some of the stages of compilation, you can
use -x (or filename suffixes) to tell gcc where to start,
and one of the options -c, -S, or -E to say where gcc is to
stop. Note that some combinations (for example, -x cpp-
output -E) instruct gcc to do nothing at all.
-c Compile or assemble the source files, but do not link.
The linking stage simply is not done. The ultimate
output is in the form of an object file for each source
file.
By default, the object file name for a source file is
made by replacing the suffix .c, .i, .s, etc., with .o.
Unrecognized input files, not requiring compilation or
assembly, are ignored.
-S Stop after the stage of compilation proper; do not
assemble. The output is in the form of an assembler
code file for each non-assembler input file specified.
By default, the assembler file name for a source file is
made by replacing the suffix .c, .i, etc., with .s.
Input files that don't require compilation are ignored.
-E Stop after the preprocessing stage; do not run the
compiler proper. The output is in the form of
preprocessed source code, which is sent to the standard
output.
Input files which don't require preprocessing are
ignored.