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.

-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.

-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.

-v

Print (on standard error output) the commands executed to run the stages of compilation. Also print the version number of the compiler driver program and of the preprocessor and the compiler proper.

-###

Like -v except the commands are not executed and arguments are quoted unless they contain only alphanumeric characters or “./-_”. This is useful for shell scripts to capture the driver-generated command lines.

-pipe

Use pipes rather than temporary files for communication between the various stages of compilation. This fails to work on some systems where the assembler is unable to read from a pipe; but the GNU assembler has no trouble.

–help

Print (on the standard output) a description of the command line options understood by gcc. If the -v option is also specified then –help will also be passed on to the various processes invoked by gcc, so that they can display the command line options they accept. If the -Wextra option has also been specified (prior to the –help option), then command line options which have no documentation
associated with them will also be displayed.

–target-help

Print (on the standard output) a description of target-specific command line options for each tool. For some targets extra target-specific information may also be printed.