When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The “overall options” allow you to stop this process at an intermediate stage. For example, the -c option says not to run the linker. Then the output consists of object files output by the assembler. See Options Controlling the Kind of Output .
Other options are passed on to one or more stages of processing. Some options control the preprocessor and others the compiler itself. Yet other options control the assembler and linker; most of these are not documented here, since you rarely need to use any of them.
Most of the command-line options that you can use with GCC are useful for C programs; when an option is only useful with another language (usually C++), the explanation says so explicitly. If the description for a particular option does not mention a source language, you can use that option with all supported languages.
The usual way to run GCC is to run the executable called
when cross-compiling, or
to run a specific version of GCC. When you compile C++ programs, you should invoke GCC as
instead. See Compiling C++ Programs
information about the differences in behavior between
when compiling C++ programs.
You can mix options and other arguments. For the most part, the order you use doesn't matter. Order does matter when you use several options of the same kind; for example, if you specify -L more than once, the directories are searched in the order specified. Also, the placement of the -l option is significant.
Many options have long names starting with ‘ -f ’ or with ‘ -W ’—for example, -fmove-loop-invariants , -Wformat and so on. Most of these have both positive and negative forms; the negative form of -ffoo is -fno-foo . This manual documents only one of these two forms, whichever one is not the default.
See Option Index , for an index to GCC's options.