Troubleshooting in the GCC C++ compiler
GCC provides several help and diagnostic options to assist in troubleshooting problems with the compilation process. The options that you can use to ease your troubleshooting process are explained in the upcoming sections.
Help for command-line options
Use the help
options to get a summary of the top-level GCC command-line options. The command for this is as follows:
g++ --help
To display a complete list of the options for GCC and its associated programs, such as the GNU Linker and GNU Assembler, use the preceding help
option with the verbose (-v
) option:
g++ -v --help
The complete list of options produced by the preceding command is extremely long—you may wish to go through it using the more
command or redirect the output to a file for reference, as follows:
g++ -v --help 2>&1 | more
Version numbers
You can find the version number of your installed GCC installation using the version
option, as shown in the following command:
g++ --version
In my system, if I run the preceding command, I will get an output like this:
g++ (x86_64-posix-seh-rev2, Built by MinGW-W64 project) 4.9.2
This depends on your setting that you adjust at the installation process.
The version number is important when investigating compilation problems, since older versions of GCC may be missing some features that a program uses. The version number has the major-version.minor-version
or major-version.minor-version.micro-version
form, where the additional third "micro" version number (as shown in the preceding command) is used for subsequent bug fix releases in a release series.
The verbose compilation
The -v
option can also be used to display detailed information about the exact sequence of commands that are used to compile and link a program. Here is an example that shows you the verbose compilation of the hello.cpp
program:
g++ -v -Wall rangen.cpp
After this, you will get something like this in the console:
Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=C:/mingw-w64/bin/../libexec/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../../../src/gcc-4.9.2/configure – ...Thread model: posix gcc version 4.9.2 (x86_64-posix-seh-rev2, Built by MinGW-W64 project) ...
The output produced by the -v
option can be useful whenever there is a problem with the compilation process itself. It displays the full directory paths used to search for header files and libraries, the predefined preprocessor symbols, and the object files and libraries used for linking.