\entry{gcc, GNU C Compiler}{3}{\code {gcc}, GNU C Compiler} \entry{C, gcc compiler}{3}{C, \code {gcc} compiler} \entry{history, of GCC}{3}{history, of GCC} \entry{Richard Stallman, principal author of GCC}{3}{Richard Stallman, principal author of GCC} \entry{GNU Project, history of}{3}{GNU Project, history of} \entry{Free Software Foundation (FSF)}{3}{Free Software Foundation (FSF)} \entry{C++, g++ compiler}{3}{C++, \code {g++} compiler} \entry{g++, GNU C++ Compiler}{3}{\code {g++}, GNU C++ Compiler} \entry{EGCS (Experimental GNU Compiler Suite)}{3}{EGCS (Experimental GNU Compiler Suite)} \entry{Fortran, g77 compiler}{3}{Fortran, \code {g77} compiler} \entry{Objective-C}{3}{Objective-C} \entry{ADA, gnat compiler}{3}{ADA, \code {gnat} compiler} \entry{Java, gcj compiler}{3}{Java, \code {gcj} compiler} \entry{g77, Fortran compiler}{3}{\code {g77}, Fortran compiler} \entry{gnat, GNU ADA compiler}{3}{\code {gnat}, GNU ADA compiler} \entry{gcj, GNU Compiler for Java}{3}{\code {gcj}, GNU Compiler for Java} \entry{features, of GCC}{4}{features, of GCC} \entry{major features, of GCC}{4}{major features, of GCC} \entry{GNU Compilers, major features}{4}{GNU Compilers, major features} \entry{embedded systems, cross-compilation for}{4}{embedded systems, cross-compilation for} \entry{Lisp, compared with C/C++}{5}{Lisp, compared with C/C++} \entry{Smalltalk, compared with C/C++}{5}{Smalltalk, compared with C/C++} \entry{Scheme, compared with C/C++}{5}{Scheme, compared with C/C++} \entry{Java, compared with C/C++}{5}{Java, compared with C/C++} \entry{C/C++, risks of using}{5}{C/C++, risks of using} \entry{risks, examples of}{5}{risks, examples of} \entry{conventions, used in manual}{5}{conventions, used in manual} \entry{examples, conventions used in}{5}{examples, conventions used in} \entry{shell prompt}{5}{shell prompt} \entry{$, shell prompt}{5}{\code {$}, shell prompt} \entry{dollar sign $, shell prompt}{5}{dollar sign \code {$}, shell prompt} \entry{shell variables}{6}{shell variables} \entry{environment variables}{6}{environment variables} \entry{compiling C programs with gcc}{7}{compiling C programs with \code {gcc}} \entry{source code}{7}{source code} \entry{machine code}{7}{machine code} \entry{executable file}{7}{executable file} \entry{binary file, also called executable file}{7}{binary file, also called executable file} \entry{Hello World program, in C}{7}{Hello World program, in C} \entry{C, compiling with gcc}{7}{C, compiling with \code {gcc}} \entry{simple C program, compiling}{7}{simple C program, compiling} \entry{.c, C source file extension}{7}{\code {.c}, C source file extension} \entry{c, C source file extension}{7}{\code {c}, C source file extension} \entry{C source file, .c extension}{7}{C source file, \code {.c} extension} \entry{file extension, .c source file}{7}{file extension, \code {.c} source file} \entry{extension, .c source file}{7}{extension, \code {.c} source file} \entry{gcc, simple example}{7}{\code {gcc}, simple example} \entry{-o option, set output filename}{7}{\option {-o} option, set output filename} \entry{o option, set output filename}{7}{\option {o} option, set output filename} \entry{output file option, -o}{7}{output file option, \option {-o}} \entry{a.out, default executable filename}{7}{\code {a.out}, default executable filename} \entry{executable, default filename a.out}{7}{executable, default filename \code {a.out}} \entry{default executable filename, a.out}{7}{default executable filename, \code {a.out}} \entry{-Wall option, enable common warnings}{7}{\option {-Wall} option, enable common warnings} \entry{Wall option, enable common warnings}{7}{\option {Wall} option, enable common warnings} \entry{warning options, -Wall}{7}{warning options, \option {-Wall}} \entry{executable, running}{8}{executable, running} \entry{running an executable file, C}{8}{running an executable file, C} \entry{printf, example of error in format}{8}{\code {printf}, example of error in format} \entry{warning, format with different type arg}{8}{warning, format with different type arg} \entry{format, different type arg warning}{8}{format, different type arg warning} \entry{different type arg, format warning}{8}{different type arg, format warning} \entry{bug, example of}{9}{bug, example of} \entry{C/C++, risks of using}{9}{C/C++, risks of using} \entry{risks, examples of}{9}{risks, examples of} \entry{multiple files, compiling}{9}{multiple files, compiling} \entry{compiling multiple files}{9}{compiling multiple files} \entry{declaration, in header file}{9}{declaration, in header file} \entry{header file, declarations in}{9}{header file, declarations in} \entry{.h, header file extension}{9}{\code {.h}, header file extension} \entry{h, header file extension}{9}{\code {h}, header file extension} \entry{header file, .h extension}{9}{header file, \code {.h} extension} \entry{file extension, .h header file}{9}{file extension, \code {.h} header file} \entry{extension, .h header file}{9}{extension, \code {.h} header file} \entry{#include, preprocessor directive}{10}{\code {#include}, preprocessor directive} \entry{compiling files independently}{11}{compiling files independently} \entry{independent compilation of files}{11}{independent compilation of files} \entry{linking, explanation of}{11}{linking, explanation of} \entry{object file, explanation of}{11}{object file, explanation of} \entry{.o, object file extension}{11}{\code {.o}, object file extension} \entry{o, object file extension}{11}{\code {o}, object file extension} \entry{file extension, .o object file}{11}{file extension, \code {.o} object file} \entry{extension, .o object file}{11}{extension, \code {.o} object file} \entry{object file, .o extension}{11}{object file, \code {.o} extension} \entry{creating object files from source files}{11}{creating object files from source files} \entry{-c option, compile to object file}{11}{\option {-c} option, compile to object file} \entry{c option, compile to object file}{11}{\option {c} option, compile to object file} \entry{compile to object file, -c option}{11}{compile to object file, \option {-c} option} \entry{object file, creating from source using option -c}{11}{object file, creating from source using option \option {-c}} \entry{header file, not compiled}{12}{header file, not compiled} \entry{creating executable files from object files}{12}{creating executable files from object files} \entry{linking, creating executable files from object files}{12}{linking, creating executable files from object files} \entry{executable, creating from object files by linking}{12}{executable, creating from object files by linking} \entry{object files, linking to create executable file}{12}{object files, linking to create executable file} \entry{linker, initial description}{12}{linker, initial description} \entry{recompiling modified source files}{12}{recompiling modified source files} \entry{relinking updated object files}{12}{relinking updated object files} \entry{modified source files, recompiling}{12}{modified source files, recompiling} \entry{updated object files, relinking}{12}{updated object files, relinking} \entry{source files, recompiling}{12}{source files, recompiling} \entry{object files, relinking}{12}{object files, relinking} \entry{C programs, recompiling after modification}{12}{C programs, recompiling after modification} \entry{recompiling modified source files}{13}{recompiling modified source files} \entry{modified source files, recompiling}{13}{modified source files, recompiling} \entry{updated source files, recompiling}{13}{updated source files, recompiling} \entry{relinking updated object files}{13}{relinking updated object files} \entry{linking, updated object files}{13}{linking, updated object files} \entry{makefile, example of}{13}{makefile, example of} \entry{GNU Make}{13}{GNU Make} \entry{target, in makefile}{13}{target, in makefile} \entry{dependency, in makefile}{13}{dependency, in makefile} \entry{command, in makefile}{13}{command, in makefile} \entry{tab, in makefiles}{14}{tab, in makefiles} \entry{separator, in makefiles}{14}{separator, in makefiles} \entry{implicit rules, in makefile}{14}{implicit rules, in makefile} \entry{rules, in makefile}{14}{rules, in makefile} \entry{CFLAGS, make variable}{14}{\code {CFLAGS}, make variable} \entry{CC, make variable}{14}{\code {CC}, make variable} \entry{CXX, make variable}{14}{\code {CXX}, make variable} \entry{CXXFLAGS, make variable}{14}{\code {CXXFLAGS}, make variable} \entry{CPPFLAGS, make variable}{14}{\code {CPPFLAGS}, make variable} \entry{variables, in make}{14}{variables, in make} \entry{linking, with external libraries}{15}{linking, with external libraries} \entry{libraries, linking with}{15}{libraries, linking with} \entry{sqrt, example of linking with}{15}{\code {sqrt}, example of linking with} \entry{C math library}{15}{C math library} \entry{library, C math library}{15}{library, C math library} \entry{math library}{15}{math library} \entry{system libraries}{15}{system libraries} \entry{external libraries, linking with}{15}{external libraries, linking with} \entry{libraries, stored in archive files}{15}{libraries, stored in archive files} \entry{archive file, explanation of}{15}{archive file, explanation of} \entry{.a, archive file extension}{15}{\code {.a}, archive file extension} \entry{a, archive file extension}{15}{\code {a}, archive file extension} \entry{file extension, .a archive file}{15}{file extension, \code {.a} archive file} \entry{extension, .a archive file}{15}{extension, \code {.a} archive file} \entry{archive file, .a extension}{15}{archive file, \code {.a} extension} \entry{GNU archiver, ar}{15}{GNU archiver, \code {ar}} \entry{ar, GNU archiver}{15}{\code {ar}, GNU archiver} \entry{system libraries, location of}{15}{system libraries, location of} \entry{C standard library}{15}{C standard library} \entry{C library, standard}{15}{C library, standard} \entry{standard library, C}{15}{standard library, C} \entry{library, C standard library}{15}{library, C standard library} \entry{undefined reference error}{16}{undefined reference error} \entry{reference, undefined due to missing library}{16}{reference, undefined due to missing library} \entry{libraries, link error due to undefined reference}{16}{libraries, link error due to undefined reference} \entry{/tmp directory, temporary files}{16}{\file {/tmp} directory, temporary files} \entry{temporary files, written to /tmp}{16}{temporary files, written to \file {/tmp}} \entry{object files, temporary}{16}{object files, temporary} \entry{linking, with library using -l}{17}{linking, with library using \option {-l}} \entry{libraries, linking with}{17}{libraries, linking with} \entry{-l option, linking with libraries}{17}{\option {-l} option, linking with libraries} \entry{-lm option, link with math library}{17}{\option {-lm} option, link with math library} \entry{l option, linking with libraries}{17}{\option {l} option, linking with libraries} \entry{math library, linking with -lm}{17}{math library, linking with \option {-lm}} \entry{libraries, link order}{17}{libraries, link order} \entry{link order, of libraries}{17}{link order, of libraries} \entry{link order, from left to right}{17}{link order, from left to right} \entry{undefined reference error}{17}{undefined reference error} \entry{error, undefined reference due to library link order}{17}{error, undefined reference due to library link order} \entry{linking, undefined reference error due to library link order}{17}{linking, undefined reference error due to library link order} \entry{ordering of libraries}{18}{ordering of libraries} \entry{libraries, link order}{18}{libraries, link order} \entry{header file, missing}{18}{header file, missing} \entry{declaration, missing}{18}{declaration, missing} \entry{missing header files}{18}{missing header files} \entry{library header files, using}{18}{library header files, using} \entry{bug, example of}{18}{bug, example of} \entry{C/C++, risks of using}{19}{C/C++, risks of using} \entry{implicit declaration of function}{19}{implicit declaration of function} \entry{header file, missing header causes implicit declaration}{19}{header file, missing header causes implicit declaration} \entry{missing header file, causes implicit declaration}{19}{missing header file, causes implicit declaration} \entry{compilation, options}{21}{compilation, options} \entry{options, compilation}{21}{options, compilation} \entry{search paths}{21}{search paths} \entry{paths, search}{21}{paths, search} \entry{No such file or directory, header file not found}{21}{No such file or directory, header file not found} \entry{header file, not found}{21}{header file, not found} \entry{cannot find library error}{21}{cannot find \var {library} error} \entry{link error, cannot find library}{21}{link error, cannot find library} \entry{ld: cannot find library error}{21}{ld: cannot find library error} \entry{link error, cannot find library}{21}{link error, cannot find library} \entry{default directories, linking and header files}{21}{default directories, linking and header files} \entry{linking, default directories}{21}{linking, default directories} \entry{header file, default directories}{21}{header file, default directories} \entry{libraries, on 64-bit platforms}{21}{libraries, on 64-bit platforms} \entry{64-bit platforms, additional library directories}{21}{64-bit platforms, additional library directories} \entry{system libraries, location of}{21}{system libraries, location of} \entry{-L option, library search path}{21}{\option {-L} option, library search path} \entry{L option, library search path}{21}{\option {L} option, library search path} \entry{-I option, include path}{21}{\option {-I} option, include path} \entry{I option, include path}{21}{\option {I} option, include path} \entry{libraries, extending search path with -L}{21}{libraries, extending search path with \option {-L}} \entry{include path, extending with -I}{21}{include path, extending with \option {-I}} \entry{header file, include path---extending with -I}{21}{header file, include path---extending with \option {-I}} \entry{search paths, example}{22}{search paths, example} \entry{gdbm, GNU DBM library}{22}{\code {gdbm}, GNU DBM library} \entry{key-value pairs, stored with GDBM}{22}{key-value pairs, stored with GDBM} \entry{DBM file, created with gdbm}{22}{DBM file, created with \code {gdbm}} \entry{No such file or directory, header file not found}{22}{No such file or directory, header file not found} \entry{cannot find library error}{23}{cannot find \var {library} error} \entry{environment variables, for default search paths}{23}{environment variables, for default search paths} \entry{shell variables}{23}{shell variables} \entry{bash profile file, login settings}{23}{\code {bash} profile file, login settings} \entry{include path, setting with environment variables}{23}{include path, setting with environment variables} \entry{C include path}{23}{C include path} \entry{C++ include path}{23}{C++ include path} \entry{C_INCLUDE_PATH}{23}{\env {C_INCLUDE_PATH}} \entry{CPLUS_INCLUDE_PATH}{23}{\env {CPLUS_INCLUDE_PATH}} \entry{link path, setting with environment variable}{24}{link path, setting with environment variable} \entry{multiple directories, on include and link paths}{24}{multiple directories, on include and link paths} \entry{extended search paths, for include and link directories}{24}{extended search paths, for include and link directories} \entry{search paths, extended}{24}{search paths, extended} \entry{shared libraries}{25}{shared libraries} \entry{static libraries}{25}{static libraries} \entry{error while loading shared libraries}{25}{error while loading shared libraries} \entry{cannot open shared object file}{25}{cannot open shared object file} \entry{shared libraries, error while loading}{25}{shared libraries, error while loading} \entry{libraries, error while loading shared library}{25}{libraries, error while loading shared library} \entry{.so, shared object file extension}{25}{\code {.so}, shared object file extension} \entry{so, shared object file extension}{25}{\code {so}, shared object file extension} \entry{extension, .so shared object file}{25}{extension, \code {.so} shared object file} \entry{file extension, .so shared object file}{25}{file extension, \code {.so} shared object file} \entry{shared object file, .so extension}{25}{shared object file, \code {.so} extension} \entry{dynamically linked library, see shared libraries}{25}{dynamically linked library, see shared libraries} \entry{DLL (dynamically linked library), see shared libraries}{25}{DLL (dynamically linked library), see shared libraries} \entry{loader function}{26}{loader function} \entry{dynamic loader}{26}{dynamic loader} \entry{linking, dynamic (shared libraries)}{26}{linking, dynamic (shared libraries)} \entry{shared libraries, advantages of}{26}{shared libraries, advantages of} \entry{disk space, reduced usage by shared libraries}{26}{disk space, reduced usage by shared libraries} \entry{-rpath option, set run-time shared library search path}{26}{\option {-rpath} option, set run-time shared library search path} \entry{rpath option, set run-time shared library search path}{26}{\option {rpath} option, set run-time shared library search path} \entry{LD_LIBRARY_PATH, shared library load path}{26}{\env {LD_LIBRARY_PATH}, shared library load path} \entry{shared libraries, setting load path}{26}{shared libraries, setting load path} \entry{environment variables}{26}{environment variables} \entry{shell variables}{26}{shell variables} \entry{environment variables, setting permanently}{27}{environment variables, setting permanently} \entry{shell variables, setting permanently}{27}{shell variables, setting permanently} \entry{login file, setting environment variables in}{27}{login file, setting environment variables in} \entry{profile file, setting environment variables in}{27}{profile file, setting environment variables in} \entry{bash profile file, login settings}{27}{\code {bash} profile file, login settings} \entry{environment variables, extending an existing path}{27}{environment variables, extending an existing path} \entry{paths, extending environment variable}{27}{paths, extending environment variable} \entry{loader configuration file, ld.so.conf}{27}{loader configuration file, \code {ld.so.conf}} \entry{ld.so.conf, loader configuration file}{27}{\code {ld.so.conf}, loader configuration file} \entry{-static option, force static linking}{27}{\option {-static} option, force static linking} \entry{static option, force static linking}{27}{\option {static} option, force static linking} \entry{static linking, forcing with -static}{27}{static linking, forcing with \option {-static}} \entry{C language, dialects of}{28}{C language, dialects of} \entry{dialects of C language}{28}{dialects of C language} \entry{ANSI/ISO C, compared with GNU C extensions}{28}{ANSI/ISO C, compared with GNU C extensions} \entry{ISO C, compared with GNU C extensions}{28}{ISO C, compared with GNU C extensions} \entry{GNU C extensions, compared with ANSI/ISO C}{28}{GNU C extensions, compared with ANSI/ISO C} \entry{-ansi option, disable language extensions}{28}{\option {-ansi} option, disable language extensions} \entry{ansi option, disable language extensions}{28}{\option {ansi} option, disable language extensions} \entry{-pedantic option, conform to the ANSI standard (with -ansi)}{28}{\option {-pedantic} option, conform to the ANSI standard (with \option {-ansi})} \entry{pedantic option}{28}{\option {pedantic} option} \entry{-std option, select specific language standard}{28}{\option {-std} option, select specific language standard} \entry{std option, select specific language standard}{28}{\option {std} option, select specific language standard} \entry{ANSI/ISO C, controlled with -ansi option}{28}{ANSI/ISO C, controlled with \option {-ansi} option} \entry{ISO C, controlled with -ansi option}{28}{ISO C, controlled with \option {-ansi} option} \entry{keywords, additional in GNU C}{29}{keywords, additional in GNU C} \entry{parse error due to language extensions}{29}{parse error due to language extensions} \entry{asm extension keyword}{29}{\code {asm} extension keyword} \entry{typeof, GNU C extension keyword}{29}{\code {typeof}, GNU C extension keyword} \entry{unix, GNU C extension keyword}{29}{\code {unix}, GNU C extension keyword} \entry{vax, GNU C extension keyword}{29}{\code {vax}, GNU C extension keyword} \entry{undeclared identifier error for C library, when using -ansi option}{29}{undeclared identifier error for C library, when using \option {-ansi} option} \entry{_GNU_SOURCE macro, enables extensions to GNU C Library}{30}{\code {_GNU_SOURCE} macro, enables extensions to GNU C Library} \entry{GNU_SOURCE macro (_GNU_SOURCE), enables extensions to GNU C Library}{30}{\code {GNU_SOURCE} macro (\code {_GNU_SOURCE}), enables extensions to GNU C Library} \entry{feature test macros, GNU C Library}{30}{feature test macros, GNU C Library} \entry{GNU C Library, feature test macros}{30}{GNU C Library, feature test macros} \entry{POSIX extensions, GNU C Library}{30}{POSIX extensions, GNU C Library} \entry{BSD extensions, GNU C Library}{30}{BSD extensions, GNU C Library} \entry{XOPEN extensions, GNU C Library}{30}{XOPEN extensions, GNU C Library} \entry{SVID extensions, GNU C Library}{30}{SVID extensions, GNU C Library} \entry{pedantic option}{30}{\option {pedantic} option} \entry{ANSI/ISO C, pedantic diagnostics option}{30}{ANSI/ISO C, pedantic diagnostics option} \entry{strict ANSI/ISO C, -pedantic option}{30}{strict ANSI/ISO C, \option {-pedantic} option} \entry{variable-size arrays}{30}{variable-size arrays} \entry{arrays, variable-size}{30}{arrays, variable-size} \entry{-std option, select specific language standard}{31}{\option {-std} option, select specific language standard} \entry{std option, select specific language standard}{31}{\option {std} option, select specific language standard} \entry{c89/c99, selected with -std}{31}{\code {c89}/\code {c99}, selected with \option {-std}} \entry{gnu89/gnu99, selected with -std}{31}{\code {gnu89}/\code {gnu99}, selected with \option {-std}} \entry{iso9899:1990/iso9899:1999, selected with -std}{31}{\code {iso9899:1990}/\code {iso9899:1999}, selected with \option {-std}} \entry{selecting specific language standards, with -std}{31}{selecting specific language standards, with \option {-std}} \entry{language standards, selecting with -std}{31}{language standards, selecting with \option {-std}} \entry{warning options, in detail}{32}{warning options, in detail} \entry{comments, nested}{32}{comments, nested} \entry{nested comments, warning of}{32}{nested comments, warning of} \entry{-Wcomment option, warn about nested comments}{32}{\option {-Wcomment} option, warn about nested comments} \entry{Wcomment option, warn about nested comments}{32}{\option {Wcomment} option, warn about nested comments} \entry{comment warning option, warn about nested comments}{32}{\option {comment} warning option, warn about nested comments} \entry{#if, preprocessor directive}{32}{\code {#if}, preprocessor directive} \entry{-Wformat option, warn about incorrect format strings}{32}{\option {-Wformat} option, warn about incorrect format strings} \entry{format strings, incorrect usage warning}{32}{format strings, incorrect usage warning} \entry{printf, incorrect usage warning}{32}{\code {printf}, incorrect usage warning} \entry{scanf, incorrect usage warning}{32}{\code {scanf}, incorrect usage warning} \entry{unused variable warning}{32}{unused variable warning} \entry{-Wunused option, unused variable warning}{32}{\option {-Wunused} option, unused variable warning} \entry{Wunused option, unused variable warning}{32}{\option {Wunused} option, unused variable warning} \entry{-Wimplicit option, warn about missing declarations}{32}{\option {-Wimplicit} option, warn about missing declarations} \entry{Wimplicit option, warn about missing declarations}{32}{\option {Wimplicit} option, warn about missing declarations} \entry{implicit declaration of function}{32}{implicit declaration of function} \entry{missing prototypes warning}{32}{missing prototypes warning} \entry{prototypes, missing}{32}{prototypes, missing} \entry{return type, invalid}{33}{return type, invalid} \entry{empty return, incorrect use of}{33}{empty \code {return}, incorrect use of} \entry{void return, incorrect use of}{33}{void \code {return}, incorrect use of} \entry{-Wreturn-type option, warn about incorrect return types}{33}{\option {-Wreturn-type} option, warn about incorrect return types} \entry{Wreturn-type option, warn about incorrect return types}{33}{\option {Wreturn-type} option, warn about incorrect return types} \entry{additional warning options}{33}{additional warning options} \entry{warning options, additional}{33}{warning options, additional} \entry{common errors, not included with -Wall}{34}{common errors, not included with \option {-Wall}} \entry{-W option, enable additional warnings}{34}{\option {-W} option, enable additional warnings} \entry{W option, enable additional warnings}{34}{\option {W} option, enable additional warnings} \entry{warnings, additional with -W}{34}{warnings, additional with \option {-W}} \entry{warning option, -W additional warnings}{34}{warning option, \option {-W} additional warnings} \entry{comparison of expression always true/false warning}{34}{comparison of expression always true/false warning} \entry{type conversions, warning of}{34}{type conversions, warning of} \entry{conversions between types, warning of}{34}{conversions between types, warning of} \entry{unsigned variable converted to signed, warning of}{34}{unsigned variable converted to signed, warning of} \entry{signed variable converted to unsigned, warning of}{34}{signed variable converted to unsigned, warning of} \entry{-Wconversion option, warn about type conversions}{34}{\option {-Wconversion} option, warn about type conversions} \entry{Wconversion option, warn about type conversions}{34}{\option {Wconversion} option, warn about type conversions} \entry{casts, used to avoid conversion warnings}{35}{casts, used to avoid conversion warnings} \entry{unsigned integer, casting}{35}{unsigned integer, casting} \entry{signed integer, casting}{35}{signed integer, casting} \entry{shadowing of variables}{35}{shadowing of variables} \entry{variable shadowing}{35}{variable shadowing} \entry{-Wshadow option, warn about shadowed variables}{35}{\option {-Wshadow} option, warn about shadowed variables} \entry{Wshadow option, warn about shadowed variables}{35}{\option {Wshadow} option, warn about shadowed variables} \entry{qualifiers, warning about overriding by casts}{36}{qualifiers, warning about overriding by casts} \entry{const, warning about overriding by casts}{36}{\code {const}, warning about overriding by casts} \entry{-Wcast-qual option, warn about casts removing qualifiers}{36}{\option {-Wcast-qual} option, warn about casts removing qualifiers} \entry{Wcast-qual option, warn about casts removing qualifiers}{36}{\option {Wcast-qual} option, warn about casts removing qualifiers} \entry{writable string constants, disabling}{37}{writable string constants, disabling} \entry{constant strings, compile-time warnings}{37}{constant strings, compile-time warnings} \entry{-Wwrite-strings option, warning for modified string constants}{37}{\option {-Wwrite-strings} option, warning for modified string constants} \entry{Wwrite-strings option, warning for modified string constants}{37}{\option {Wwrite-strings} option, warning for modified string constants} \entry{K&R dialect of C, warnings of different behavior}{37}{K&R dialect of C, warnings of different behavior} \entry{Traditional C (K&R), warnings of different behavior}{37}{Traditional C (K&R), warnings of different behavior} \entry{-Wtraditional option, warn about traditional C}{37}{\option {-Wtraditional} option, warn about traditional C} \entry{Wtraditional option, warn about traditional C}{37}{\option {Wtraditional} option, warn about traditional C} \entry{warnings, promoting to errors}{37}{warnings, promoting to errors} \entry{compilation, stopping on warning}{37}{compilation, stopping on warning} \entry{-Werror option, convert warnings to errors}{37}{\option {-Werror} option, convert warnings to errors} \entry{Werror option, convert warnings to errors}{37}{\option {Werror} option, convert warnings to errors} \entry{cpp, C preprocessor}{39}{\code {cpp}, C preprocessor} \entry{preprocessor, using}{39}{preprocessor, using} \entry{defining macros}{39}{defining macros} \entry{macros, defining in preprocessor}{39}{macros, defining in preprocessor} \entry{#define, preprocessor directive}{39}{\code {#define}, preprocessor directive} \entry{#ifdef, preprocessor directive}{39}{\code {#ifdef}, preprocessor directive} \entry{-D option, define macro}{39}{\option {-D} option, define macro} \entry{D option, define macro}{39}{\option {D} option, define macro} \entry{namespace, reserved prefix for preprocessor}{40}{namespace, reserved prefix for preprocessor} \entry{predefined macros}{40}{predefined macros} \entry{macros, predefined}{40}{macros, predefined} \entry{-dM option, list predefined macros}{40}{\option {-dM} option, list predefined macros} \entry{dM option, list predefined macros}{40}{\option {dM} option, list predefined macros} \entry{system-specific predefined macros}{40}{system-specific predefined macros} \entry{value, of macro}{40}{value, of macro} \entry{macros, defined with value}{40}{macros, defined with value} \entry{precedence, when using preprocessor}{41}{precedence, when using preprocessor} \entry{default value, of macro defined with -D}{42}{default value, of macro defined with \option {-D}} \entry{macros, default value of}{42}{macros, default value of} \entry{preprocessor macros, default value of}{42}{preprocessor macros, default value of} \entry{quotes, for defining empty macro}{42}{quotes, for defining empty macro} \entry{empty macro, compared with undefined macro}{42}{empty macro, compared with undefined macro} \entry{undefined macro, compared with empty macro}{42}{undefined macro, compared with empty macro} \entry{shell quoting}{42}{shell quoting} \entry{-E option, preprocess source files}{42}{\option {-E} option, preprocess source files} \entry{E option, preprocess source files}{42}{\option {E} option, preprocess source files} \entry{preprocessing source files, -E option}{42}{preprocessing source files, \option {-E} option} \entry{line numbers, recorded in preprocessed files}{42}{line numbers, recorded in preprocessed files} \entry{-save-temps option, keeps intermediate files}{43}{\option {-save-temps} option, keeps intermediate files} \entry{save-temps option, keeps intermediate files}{43}{\option {save-temps} option, keeps intermediate files} \entry{preprocessed files, keeping}{43}{preprocessed files, keeping} \entry{intermediate files, keeping}{43}{intermediate files, keeping} \entry{temporary files, keeping}{43}{temporary files, keeping} \entry{debugging, compilation flags}{45}{debugging, compilation flags} \entry{-g option, enable debugging}{45}{\option {-g} option, enable debugging} \entry{g option, enable debugging}{45}{\option {g} option, enable debugging} \entry{compilation, for debugging}{45}{compilation, for debugging} \entry{gdb}{45}{\code {gdb}} \entry{debugging, with gdb}{45}{debugging, with \code {gdb}} \entry{GNU debugger, gdb}{45}{GNU debugger, \code {gdb}} \entry{symbol table}{45}{symbol table} \entry{executable, symbol table stored in}{45}{executable, symbol table stored in} \entry{core file, examining}{45}{core file, examining} \entry{crashes, saved in core file}{45}{crashes, saved in core file} \entry{program crashes, saved in core file}{45}{program crashes, saved in core file} \entry{examining core files}{45}{examining core files} \entry{termination, abnormal (core dumped)}{45}{termination, abnormal (\code {core dumped})} \entry{deployment, options for}{45}{deployment, options for} \entry{dereferencing, null pointer}{46}{dereferencing, null pointer} \entry{null pointer}{46}{null pointer} \entry{bug, example of}{46}{bug, example of} \entry{segmentation fault}{46}{segmentation fault} \entry{core file, not produced}{46}{core file, not produced} \entry{ulimit command}{46}{\command {ulimit} command} \entry{tcsh, limit command}{47}{\code {tcsh}, limit command} \entry{bash profile file}{47}{\code {bash} profile file} \entry{core file, examining}{47}{core file, examining} \entry{gdb, debugging core file with}{47}{\code {gdb}, debugging core file with} \entry{print debugger command}{48}{\code {print} debugger command} \entry{displaying a backtrace}{48}{displaying a backtrace} \entry{backtrace, displaying}{48}{backtrace, displaying} \entry{stack backtrace, displaying}{48}{stack backtrace, displaying} \entry{backtrace, debugger command}{48}{\code {backtrace}, debugger command} \entry{break, command in gdb}{48}{\code {break}, command in \code {gdb}} \entry{breakpoints, defined}{48}{breakpoints, defined} \entry{stopping execution, with breakpoints in gdb}{48}{stopping execution, with breakpoints in \code {gdb}} \entry{step, command in gdb}{49}{\code {step}, command in \code {gdb}} \entry{next, command in gdb}{49}{\code {next}, command in \code {gdb}} \entry{set, command in gdb}{49}{\code {set}, command in \code {gdb}} \entry{finish, command in gdb}{50}{\code {finish}, command in \code {gdb}} \entry{continue, command in gdb}{50}{\code {continue}, command in \code {gdb}} \entry{exit code, displayed in gdb}{50}{exit code, displayed in \code {gdb}} \entry{Emacs, gdb mode}{50}{Emacs, \code {gdb} mode} \entry{gdb, Emacs mode}{50}{\code {gdb}, Emacs mode} \entry{gdb, graphical interface}{50}{\code {gdb}, graphical interface} \entry{Insight, graphical interface for gdb}{50}{Insight, graphical interface for \code {gdb}} \entry{optimization, explanation of}{51}{optimization, explanation of} \entry{compiling with optimization}{51}{compiling with optimization} \entry{source-level optimization}{51}{source-level optimization} \entry{common subexpression elimination, optimization}{51}{common subexpression elimination, optimization} \entry{optimization, common subexpression elimination}{51}{optimization, common subexpression elimination} \entry{subexpression elimination, optimization}{51}{subexpression elimination, optimization} \entry{elimination, of common subexpressions}{51}{elimination, of common subexpressions} \entry{function inlining, example of optimization}{52}{function inlining, example of optimization} \entry{inlining, example of optimization}{52}{inlining, example of optimization} \entry{function-call overhead}{52}{function-call overhead} \entry{overhead, from function call}{52}{overhead, from function call} \entry{speed-space tradeoffs, in optimization}{54}{speed-space tradeoffs, in optimization} \entry{optimization, speed-space tradeoffs}{54}{optimization, speed-space tradeoffs} \entry{tradeoffs, between speed and space in optimization}{54}{tradeoffs, between speed and space in optimization} \entry{space vs speed, tradeoff in optimization}{54}{space vs speed, tradeoff in optimization} \entry{loop unrolling, optimization}{54}{loop unrolling, optimization} \entry{optimization, loop unrolling}{54}{optimization, loop unrolling} \entry{unrolling, of loops (optimization)}{54}{unrolling, of loops (optimization)} \entry{scheduling, stage of optimization}{55}{scheduling, stage of optimization} \entry{instruction scheduling, optimization}{55}{instruction scheduling, optimization} \entry{pipelining, explanation of}{55}{pipelining, explanation of} \entry{optimization, compiling with -O}{56}{optimization, compiling with \option {-O}} \entry{optimization, levels of}{56}{optimization, levels of} \entry{levels of optimization}{56}{levels of optimization} \entry{O option, optimization level}{56}{\option {O} option, optimization level} \entry{-O0 option, optimization level zero}{56}{\option {-O0} option, optimization level zero} \entry{unoptimized code (-O0)}{56}{unoptimized code (\option {-O0})} \entry{-O1 option, optimization level one}{56}{\option {-O1} option, optimization level one} \entry{-O2 option, optimization level two}{56}{\option {-O2} option, optimization level two} \entry{deployment, options for}{56}{deployment, options for} \entry{-O3 option, optimization level three}{57}{\option {-O3} option, optimization level three} \entry{-funroll-loops option, optimization by loop unrolling}{57}{\option {-funroll-loops} option, optimization by loop unrolling} \entry{funroll-loops option, optimization by loop unrolling}{57}{\option {funroll-loops} option, optimization by loop unrolling} \entry{loop unrolling, optimization}{57}{loop unrolling, optimization} \entry{optimization, loop unrolling}{57}{optimization, loop unrolling} \entry{unrolling, of loops (optimization)}{57}{unrolling, of loops (optimization)} \entry{-Os option, optimization for size}{57}{\option {-Os} option, optimization for size} \entry{optimization for size, -Os}{57}{optimization for size, \option {-Os}} \entry{size, optimization for, -Os}{57}{size, optimization for, \option {-Os}} \entry{optimization, example of}{57}{optimization, example of} \entry{benchmarking, with time command}{58}{benchmarking, with \code {time} command} \entry{time command, measuring run-time}{58}{\code {time} command, measuring run-time} \entry{run-time, measuring with time command}{58}{run-time, measuring with \code {time} command} \entry{debugging, with optimization}{59}{debugging, with optimization} \entry{optimization, with debugging}{59}{optimization, with debugging} \entry{deployment, options for}{59}{deployment, options for} \entry{optimization, and compiler warnings}{60}{optimization, and compiler warnings} \entry{warnings, and optimization}{60}{warnings, and optimization} \entry{data-flow analysis}{60}{data-flow analysis} \entry{-Wuninitialized option, warn about uninitialized variables}{60}{\option {-Wuninitialized} option, warn about uninitialized variables} \entry{Wuninitialized option, warn about uninitialized variables}{60}{\option {Wuninitialized} option, warn about uninitialized variables} \entry{C/C++, risks of using}{60}{C/C++, risks of using} \entry{uninitialized variable, warning of}{60}{uninitialized variable, warning of} \entry{variable, warning of uninitialized use}{60}{variable, warning of uninitialized use} \entry{C++, g++ as a true compiler}{63}{C++, \code {g++} as a true compiler} \entry{translators, from C++ to C, compared with g++}{63}{translators, from C++ to C, compared with \code {g++}} \entry{C++, compiling a simple program with g++}{63}{C++, compiling a simple program with \code {g++}} \entry{g++, compiling C++ programs}{63}{\code {g++}, compiling C++ programs} \entry{compiling C++ programs with g++}{63}{compiling C++ programs with \code {g++}} \entry{simple C++ program, compiling}{63}{simple C++ program, compiling} \entry{Hello World program, in C++}{63}{Hello World program, in C++} \entry{.cc, C++ file extension}{63}{\code {.cc}, C++ file extension} \entry{cc, C++ file extension}{63}{\code {cc}, C++ file extension} \entry{.cpp, C++ file extension}{63}{\code {.cpp}, C++ file extension} \entry{cpp, C++ file extension}{63}{\code {cpp}, C++ file extension} \entry{.cxx, C++ file extension}{63}{\code {.cxx}, C++ file extension} \entry{cxx, C++ file extension}{63}{\code {cxx}, C++ file extension} \entry{extension, .C, C++ file}{63}{extension, \code {.C}, C++ file} \entry{extension, .cc, C++ file}{63}{extension, \code {.cc}, C++ file} \entry{extension, .cpp, C++ file}{63}{extension, \code {.cpp}, C++ file} \entry{extension, .cxx, C++ file}{63}{extension, \code {.cxx}, C++ file} \entry{extension, .C, C++ file}{63}{extension, \code {.C}, C++ file} \entry{file extension, .C, C++ file}{63}{file extension, \code {.C}, C++ file} \entry{file extension, .cc, C++ file}{63}{file extension, \code {.cc}, C++ file} \entry{file extension, .cpp, C++ file}{63}{file extension, \code {.cpp}, C++ file} \entry{file extension, .cxx, C++ file}{63}{file extension, \code {.cxx}, C++ file} \entry{file extension, .C, C++ file}{63}{file extension, \code {.C}, C++ file} \entry{C++, file extensions}{63}{C++, file extensions} \entry{-ansi option, used with g++}{63}{\option {-ansi} option, used with \code {g++}} \entry{ansi option, used with g++}{63}{\option {ansi} option, used with \code {g++}} \entry{ISO C++, controlled with -ansi option}{63}{ISO C++, controlled with \option {-ansi} option} \entry{running an executable file, C++}{63}{running an executable file, C++} \entry{undefined reference to C++ function, due to linking with gcc}{64}{undefined reference to C++ function, due to linking with \code {gcc}} \entry{__gxx_personality_v0, undefined reference error}{64}{\code {__gxx_personality_v0}, undefined reference error} \entry{gxx_personality_v0, undefined reference error}{64}{\code {gxx_personality_v0}, undefined reference error} \entry{gcc, used inconsistently with g++}{64}{\code {gcc}, used inconsistently with \code {g++}} \entry{undefined reference error for __gxx_personality_v0}{64}{undefined reference error for \code {__gxx_personality_v0}} \entry{-fno-default-inline option}{65}{\option {-fno-default-inline} option} \entry{fno-default-inline option}{65}{\option {fno-default-inline} option} \entry{no-default-inline option}{65}{\option {no-default-inline} option} \entry{-Weffc++ option}{65}{\option {-Weffc++} option} \entry{Weffc++ option}{65}{\option {Weffc++} option} \entry{effc++ warning option}{65}{\option {effc++} warning option} \entry{-Wold-style-cast option}{65}{\option {-Wold-style-cast} option} \entry{Wold-style-cast option}{65}{\option {Wold-style-cast} option} \entry{old-style-cast warning option}{65}{\option {old-style-cast} warning option} \entry{C++, standard library}{66}{C++, standard library} \entry{standard library, C++}{66}{standard library, C++} \entry{library, C++ standard library}{66}{library, C++ standard library} \entry{C++, namespace std}{66}{C++, namespace \code {std}} \entry{namespace std in C++}{66}{namespace \code {std} in C++} \entry{std namespace in C++}{66}{\code {std} namespace in C++} \entry{header file, without .h extension for C++}{66}{header file, without \code {.h} extension for C++} \entry{templates, in C++}{66}{templates, in C++} \entry{generic programming, in C++}{66}{generic programming, in C++} \entry{C++, templates}{66}{C++, templates} \entry{Standard Template Library (STL)}{67}{Standard Template Library (STL)} \entry{C++, standard library templates}{67}{C++, standard library templates} \entry{C++, standard library}{67}{C++, standard library} \entry{libstdc++, C++ standard library}{67}{\code {libstdc++}, C++ standard library} \entry{instantiation, of templates in C++}{68}{instantiation, of templates in C++} \entry{C++, instantiation of templates}{68}{C++, instantiation of templates} \entry{inclusion compilation model, in C++}{68}{inclusion compilation model, in C++} \entry{compilation, model for templates}{68}{compilation, model for templates} \entry{templates, inclusion compilation model}{68}{templates, inclusion compilation model} \entry{circular buffer, template example}{68}{circular buffer, template example} \entry{buffer, template example}{68}{buffer, template example} \entry{include guards, in header file}{69}{include guards, in header file} \entry{header file, with include guards}{69}{header file, with include guards} \entry{multiply-defined symbol error, with C++}{69}{multiply-defined symbol error, with C++} \entry{linker, GNU compared with other linkers}{69}{linker, GNU compared with other linkers} \entry{templates, explicit instantiation}{70}{templates, explicit instantiation} \entry{instantiation, explicit vs implicit in C++}{70}{instantiation, explicit vs implicit in C++} \entry{explicit instantiation of templates}{70}{explicit instantiation of templates} \entry{-fno-implicit-templates option, disable implicit instantiation}{70}{\option {-fno-implicit-templates} option, disable implicit instantiation} \entry{fno-implicit-templates option, disable implicit instantiation}{70}{\option {fno-implicit-templates} option, disable implicit instantiation} \entry{C++, creating libraries with explicit instantiation}{71}{C++, creating libraries with explicit instantiation} \entry{libraries, creating with explicit instantiation in C++}{71}{libraries, creating with explicit instantiation in C++} \entry{export keyword, not supported in GCC}{71}{\code {export} keyword, not supported in GCC} \entry{templates, export keyword}{71}{templates, \code {export} keyword} \entry{platform-specific options}{73}{platform-specific options} \entry{machine-specific options}{73}{machine-specific options} \entry{options, platform-specific}{73}{options, platform-specific} \entry{-m option, platform-specific settings}{73}{\option {-m} option, platform-specific settings} \entry{m option, platform-specific settings}{73}{\option {m} option, platform-specific settings} \entry{Intel x86, platform-specific options}{73}{Intel x86, platform-specific options} \entry{AMD x86, platform-specific options}{73}{AMD x86, platform-specific options} \entry{x86, platform-specific options}{73}{x86, platform-specific options} \entry{Pentium, platform-specific options}{73}{Pentium, platform-specific options} \entry{Athlon, platform-specific options}{73}{Athlon, platform-specific options} \entry{-march option, compile for specific CPU}{73}{\option {-march} option, compile for specific CPU} \entry{march option, compile for specific CPU}{73}{\option {march} option, compile for specific CPU} \entry{-mtune option}{73}{\option {-mtune} option} \entry{mtune option}{73}{\option {mtune} option} \entry{tune machine-specific option}{73}{\option {tune} machine-specific option} \entry{SSE extensions}{74}{SSE extensions} \entry{MMX extensions}{74}{MMX extensions} \entry{illegal instruction error}{74}{illegal instruction error} \entry{-msse and related options}{74}{\option {-msse} and related options} \entry{msse and related options}{74}{\option {msse} and related options} \entry{floating point arithmetic, with SSE extensions}{74}{floating point arithmetic, with SSE extensions} \entry{-mfpmath option, for floating-point arithmetic}{74}{\option {-mfpmath} option, for floating-point arithmetic} \entry{mfpmath option, for floating-point arithmetic}{74}{\option {mfpmath} option, for floating-point arithmetic} \entry{fpmath option, for floating-point arithmetic}{74}{\option {fpmath} option, for floating-point arithmetic} \entry{64-bit processor-specific options, AMD64 and Intel}{74}{64-bit processor-specific options, AMD64 and Intel} \entry{AMD64, 64-bit processor specific options}{74}{AMD64, 64-bit processor specific options} \entry{-mcmodel option, for AMD64}{74}{\option {-mcmodel} option, for AMD64} \entry{mcmodel option, for AMD64}{74}{\option {mcmodel} option, for AMD64} \entry{red-zone, on AMD64}{75}{red-zone, on AMD64} \entry{kernel mode, on AMD64}{75}{kernel mode, on AMD64} \entry{Alpha, platform-specific options}{75}{Alpha, platform-specific options} \entry{DEC Alpha, platform-specific options}{75}{DEC Alpha, platform-specific options} \entry{IEEE options, on DEC Alpha}{75}{IEEE options, on DEC Alpha} \entry{-mieee option, floating-point support on DEC Alpha}{75}{\option {-mieee} option, floating-point support on DEC Alpha} \entry{mieee option, floating-point support on DEC Alpha}{75}{\option {mieee} option, floating-point support on DEC Alpha} \entry{NaN, not a number, on DEC Alpha}{75}{NaN, not a number, on DEC Alpha} \entry{Inf, infinity, on DEC Alpha}{75}{Inf, infinity, on DEC Alpha} \entry{denormalized numbers, on DEC Alpha}{75}{denormalized numbers, on DEC Alpha} \entry{underflow, on DEC Alpha}{75}{underflow, on DEC Alpha} \entry{gradual underflow, on DEC Alpha}{75}{gradual underflow, on DEC Alpha} \entry{soft underflow, on DEC Alpha}{75}{soft underflow, on DEC Alpha} \entry{zero, from underflow on DEC Alpha}{75}{zero, from underflow on DEC Alpha} \entry{division by zero}{75}{division by zero} \entry{zero, division by}{75}{zero, division by} \entry{floating point exception, on DEC Alpha}{76}{floating point exception, on DEC Alpha} \entry{Sun SPARC, platform-specific options}{76}{Sun SPARC, platform-specific options} \entry{SPARC, platform-specific options}{76}{SPARC, platform-specific options} \entry{-mcpu option, compile for specific CPU}{76}{\option {-mcpu} option, compile for specific CPU} \entry{mcpu option, compile for specific CPU}{76}{\option {mcpu} option, compile for specific CPU} \entry{UltraSPARC, 32-bit mode vs 64-bit mode,}{76}{UltraSPARC, 32-bit mode vs 64-bit mode,} \entry{word-size, on UltraSPARC}{76}{word-size, on UltraSPARC} \entry{bits, 32 vs 64 on UltraSPARC}{76}{bits, 32 vs 64 on UltraSPARC} \entry{-m32 and -m64 options, compile for 32 or 64-bit environment}{76}{\option {-m32} and \option {-m64} options, compile for 32 or 64-bit environment} \entry{m32 and m64 options, compile for 32 or 64-bit environment}{76}{\option {m32} and \option {m64} options, compile for 32 or 64-bit environment} \entry{PowerPC and POWER, platform-specific options}{76}{PowerPC and POWER, platform-specific options} \entry{AIX, platform-specific options}{76}{AIX, platform-specific options} \entry{Altivec, on PowerPC}{76}{Altivec, on PowerPC} \entry{-maltivec option, enables use of Altivec processor on PowerPC}{76}{\option {-maltivec} option, enables use of Altivec processor on PowerPC} \entry{maltivec option, enables use of Altivec processor on PowerPC}{76}{\option {maltivec} option, enables use of Altivec processor on PowerPC} \entry{multiply and add instruction}{76}{multiply and add instruction} \entry{fused multiply and add instruction}{76}{fused multiply and add instruction} \entry{combined multiply and add instruction}{76}{combined multiply and add instruction} \entry{-mno-fused-madd option, on PowerPC}{76}{\option {-mno-fused-madd} option, on PowerPC} \entry{mno-fused-madd option, on PowerPC}{76}{\option {mno-fused-madd} option, on PowerPC} \entry{TOC overflow error, on AIX}{77}{TOC overflow error, on AIX} \entry{table of contents, overflow error on AIX}{77}{table of contents, overflow error on AIX} \entry{overflow error, for TOC on AIX}{77}{overflow error, for TOC on AIX} \entry{AIX, TOC overflow error}{77}{AIX, TOC overflow error} \entry{-mminimal-toc option, on AIX}{77}{\option {-mminimal-toc} option, on AIX} \entry{mminimal-toc option, on AIX}{77}{\option {mminimal-toc} option, on AIX} \entry{-mxl-call option, compatibility with IBM XL compilers on AIX}{77}{\option {-mxl-call} option, compatibility with IBM XL compilers on AIX} \entry{mxl-call option, compatibility with IBM XL compilers on AIX}{77}{\option {mxl-call} option, compatibility with IBM XL compilers on AIX} \entry{IBM XL compilers, compatibility on AIX}{77}{IBM XL compilers, compatibility on AIX} \entry{XL compilers, compatibility on AIX}{77}{XL compilers, compatibility on AIX} \entry{AIX, compatibility with IBM XL compilers}{77}{AIX, compatibility with IBM XL compilers} \entry{-pthread option, on AIX}{77}{\option {-pthread} option, on AIX} \entry{pthread option, on AIX}{77}{\option {pthread} option, on AIX} \entry{threads, on AIX}{77}{threads, on AIX} \entry{multi-architecture support, discussion of}{77}{multi-architecture support, discussion of} \entry{MIPS64, multi-architecture support}{77}{MIPS64, multi-architecture support} \entry{Sparc64, multi-architecture support}{77}{Sparc64, multi-architecture support} \entry{PowerPC64, multi-architecture support}{77}{PowerPC64, multi-architecture support} \entry{ARM, multi-architecture support}{77}{ARM, multi-architecture support} \entry{Thumb, alternative code format on ARM}{77}{Thumb, alternative code format on ARM} \entry{Itanium, multi-architecture support}{77}{Itanium, multi-architecture support} \entry{system libraries, location of}{77}{system libraries, location of} \entry{floating point, portability problems}{78}{floating point, portability problems} \entry{arithmetic, floating-point}{78}{arithmetic, floating-point} \entry{numerical differences}{78}{numerical differences} \entry{IEEE arithmetic}{78}{IEEE arithmetic} \entry{x86, floating-point arithmetic}{78}{x86, floating-point arithmetic} \entry{Motorola 680x0, floating-point arithmetic}{78}{Motorola 680x0, floating-point arithmetic} \entry{native double-precision processors}{78}{native double-precision processors} \entry{double precision}{78}{double precision} \entry{extended precision, x86 processors}{78}{extended precision, x86 processors} \entry{rounding, floating-point arithmetic}{78}{rounding, floating-point arithmetic} \entry{overflow, floating-point arithmetic}{78}{overflow, floating-point arithmetic} \entry{underflow, floating-point arithmetic}{78}{underflow, floating-point arithmetic} \entry{FreeBSD, floating-point arithmetic}{78}{FreeBSD, floating-point arithmetic} \entry{NetBSD, floating-point arithmetic}{78}{NetBSD, floating-point arithmetic} \entry{OpenBSD, floating-point arithmetic}{78}{OpenBSD, floating-point arithmetic} \entry{GNU/Linux, floating-point arithmetic}{78}{GNU/Linux, floating-point arithmetic} \entry{Linux kernel, floating-point}{78}{Linux kernel, floating-point} \entry{fldcw set floating point mode}{78}{\code {fldcw} set floating point mode} \entry{asm extension keyword}{78}{\code {asm} extension keyword} \entry{machine instruction, asm keyword}{78}{machine instruction, \code {asm} keyword} \entry{floating point exception handling}{79}{floating point exception handling} \entry{exception handling, floating-point}{79}{exception handling, floating-point} \entry{long double arithmetic}{80}{long double arithmetic} \entry{SSE/SSE2 precision}{80}{SSE/SSE2 precision} \entry{signed char option}{80}{signed \code {char} option} \entry{unsigned char option}{80}{unsigned \code {char} option} \entry{char, portability of signed vs unsigned}{80}{\code {char}, portability of signed vs unsigned} \entry{-funsigned-char option}{81}{\option {-funsigned-char} option} \entry{-fsigned-char option}{81}{\option {-fsigned-char} option} \entry{signed bitfield option}{83}{signed bitfield option} \entry{unsigned bitfield option}{83}{unsigned bitfield option} \entry{bitfields, portability of signed vs unsigned}{83}{bitfields, portability of signed vs unsigned} \entry{-funsigned-bitfields option}{83}{\option {-funsigned-bitfields} option} \entry{-fsigned-bitfields option}{83}{\option {-fsigned-bitfields} option} \entry{troubleshooting options}{85}{troubleshooting options} \entry{help options}{85}{help options} \entry{command-line help option}{85}{command-line help option} \entry{--help option, display command-line options}{85}{\option {--help} option, display command-line options} \entry{verbose help option}{85}{verbose help option} \entry{-v option, verbose compilation}{85}{\option {-v} option, verbose compilation} \entry{v option, verbose compilation}{85}{\option {v} option, verbose compilation} \entry{version number of GCC, displaying}{85}{version number of GCC, displaying} \entry{--version option, display version number}{85}{\option {--version} option, display version number} \entry{major version number, of GCC}{85}{major version number, of GCC} \entry{minor version number, of GCC}{85}{minor version number, of GCC} \entry{patch level, of GCC}{85}{patch level, of GCC} \entry{configuration files for GCC}{86}{configuration files for GCC} \entry{specs directory, compiler configuration files}{86}{\code {specs} directory, compiler configuration files} \entry{verbose compilation, -v option}{86}{verbose compilation, \option {-v} option} \entry{infinite loop, stopping}{89}{infinite loop, stopping} \entry{control-C, interrupt}{89}{control-C, interrupt} \entry{SIGINT signal}{89}{SIGINT signal} \entry{attach, debug running program}{89}{\code {attach}, debug running program} \entry{process id, finding}{89}{process id, finding} \entry{SIGQUIT signal}{90}{SIGQUIT signal} \entry{memory usage, limiting}{90}{memory usage, limiting} \entry{virtual memory usage, limiting}{90}{virtual memory usage, limiting} \entry{ulimit command}{90}{\command {ulimit} command} \entry{compiler-related tools}{93}{compiler-related tools} \entry{tools, compiler-related}{93}{tools, compiler-related} \entry{ar, GNU archiver}{93}{\code {ar}, GNU archiver} \entry{libraries, creating with ar}{93}{libraries, creating with \code {ar}} \entry{cr option, create/replace archive files}{94}{\option {cr} option, create/replace archive files} \entry{t option, archive table of contents}{94}{\option {t} option, archive table of contents} \entry{table of contents, in ar archive}{94}{table of contents, in \code {ar} archive} \entry{profiling, with gprof}{95}{profiling, with \code {gprof}} \entry{gprof, GNU Profiler}{95}{\code {gprof}, GNU Profiler} \entry{Collatz sequence}{95}{Collatz sequence} \entry{-pg option, enable profiling}{97}{\option {-pg} option, enable profiling} \entry{pg option, enable profiling}{97}{\option {pg} option, enable profiling} \entry{enable profiling, -pg option}{97}{enable profiling, \option {-pg} option} \entry{instrumented executable, for profiling}{97}{instrumented executable, for profiling} \entry{gmon.out, data file for gprof}{97}{\code {gmon.out}, data file for \code {gprof}} \entry{coverage testing, with gcov}{98}{coverage testing, with \code {gcov}} \entry{gcov, GNU coverage testing tool}{98}{\code {gcov}, GNU coverage testing tool} \entry{-fprofile-arcs option, instrument branches}{98}{\option {-fprofile-arcs} option, instrument branches} \entry{fprofile-arcs option, instrument branches}{98}{\option {fprofile-arcs} option, instrument branches} \entry{-ftest-coverage option, record coverage}{98}{\option {-ftest-coverage} option, record coverage} \entry{ftest-coverage option, record coverage}{98}{\option {ftest-coverage} option, record coverage} \entry{instrumented executable, for coverage testing}{98}{instrumented executable, for coverage testing} \entry{branches, instrumenting for coverage testing}{98}{branches, instrumenting for coverage testing} \entry{compilation, internal stages of}{101}{compilation, internal stages of} \entry{stages of compilation, used internally}{101}{stages of compilation, used internally} \entry{compiler, how it works internally}{101}{compiler, how it works internally} \entry{assembler, as}{101}{assembler, \code {as}} \entry{preprocessor, cpp}{101}{preprocessor, \code {cpp}} \entry{linker, ld}{101}{linker, \code {ld}} \entry{archiver, ar}{101}{archiver, \code {ar}} \entry{preprocessor, first stage of compilation}{102}{preprocessor, first stage of compilation} \entry{.i, preprocessed file extension for C}{102}{\code {.i}, preprocessed file extension for C} \entry{i, preprocessed file extension for C}{102}{\code {i}, preprocessed file extension for C} \entry{extension, .i preprocessed file}{102}{extension, \code {.i} preprocessed file} \entry{file extension, .i preprocessed file}{102}{file extension, \code {.i} preprocessed file} \entry{.ii, preprocessed file extension for C++}{102}{\code {.ii}, preprocessed file extension for C++} \entry{ii, preprocessed file extension for C++}{102}{\code {ii}, preprocessed file extension for C++} \entry{extension, .ii preprocessed file}{102}{extension, \code {.ii} preprocessed file} \entry{file extension, .ii preprocessed file}{102}{file extension, \code {.ii} preprocessed file} \entry{compiler, converting source code to assembly code}{102}{compiler, converting source code to assembly code} \entry{-S option, create assembly code}{102}{\option {-S} option, create assembly code} \entry{S option, create assembly code}{102}{\option {S} option, create assembly code} \entry{.s, assembly file extension}{102}{\code {.s}, assembly file extension} \entry{s, assembly file extension}{102}{\code {s}, assembly file extension} \entry{extension, .s assembly file}{102}{extension, \code {.s} assembly file} \entry{file extension, .s assembly file}{102}{file extension, \code {.s} assembly file} \entry{assembler, converting assembly language to machine code}{103}{assembler, converting assembly language to machine code} \entry{linker, ld}{103}{linker, \code {ld}} \entry{examining compiled files}{105}{examining compiled files} \entry{compiled files, examining}{105}{compiled files, examining} \entry{file command, for identifying files}{105}{\code {file} command, for identifying files} \entry{identifying files, with file command}{105}{identifying files, with \code {file} command} \entry{object file, examining with file command}{105}{object file, examining with \code {file} command} \entry{executable, examining with file command}{105}{executable, examining with \code {file} command} \entry{ELF format}{105}{ELF format} \entry{COFF format}{105}{COFF format} \entry{word-size, determined from executable file}{105}{word-size, determined from executable file} \entry{LSB, least significant byte}{105}{LSB, least significant byte} \entry{MSB, most significant byte}{105}{MSB, most significant byte} \entry{Motorola 680x0, word-order}{105}{Motorola 680x0, word-order} \entry{word-ordering, endianness}{105}{word-ordering, endianness} \entry{endianness, word-ordering}{105}{endianness, word-ordering} \entry{big-endian, word-ordering}{105}{big-endian, word-ordering} \entry{little-endian, word-ordering}{105}{little-endian, word-ordering} \entry{SYSV, System V executable format}{105}{SYSV, System V executable format} \entry{strip command}{106}{\code {strip} command} \entry{symbol table, examining with nm}{106}{symbol table, examining with \code {nm}} \entry{nm command}{106}{\code {nm} command} \entry{Binutils, GNU Binary Tools}{106}{Binutils, GNU Binary Tools} \entry{dynamically linked libraries, examining with ldd}{107}{dynamically linked libraries, examining with \code {ldd}} \entry{shared libraries, examining with ldd}{107}{shared libraries, examining with \code {ldd}} \entry{ldd, dynamical loader}{107}{\code {ldd}, dynamical loader} \entry{dependencies, of shared libraries}{107}{dependencies, of shared libraries} \entry{shared libraries, dependencies}{107}{shared libraries, dependencies} \entry{libraries, finding shared library dependencies}{107}{libraries, finding shared library dependencies} \entry{error messages, common examples}{109}{error messages, common examples} \entry{common error messages}{109}{common error messages} \entry{preprocessor, error messages}{109}{preprocessor, error messages} \entry{No such file or directory}{109}{No such file or directory} \entry{macro or '#include' recursion too deep}{109}{macro or '#include' recursion too deep} \entry{include nested too deeply}{109}{include nested too deeply} \entry{invalid preprocessing directive}{110}{invalid preprocessing directive} \entry{#elif, preprocessor directive}{110}{\code {#elif}, preprocessor directive} \entry{#else, preprocessor directive}{110}{\code {#else}, preprocessor directive} \entry{compiler, error messages}{110}{compiler, error messages} \entry{undeclared variable}{110}{undeclared variable} \entry{parse error}{111}{parse error} \entry{syntax error}{111}{syntax error} \entry{parse error at end of input}{111}{parse error at end of input} \entry{implicit declaration of function}{112}{implicit declaration of function} \entry{unterminated string or character constant}{112}{unterminated string or character constant} \entry{character constant too long}{113}{character constant too long} \entry{multiple-character character constant}{113}{multiple-character character constant} \entry{character constant too long}{113}{character constant too long} \entry{initialization makes integer from pointer without a cast}{114}{initialization makes integer from pointer without a cast} \entry{dereferencing pointer to incomplete type}{114}{dereferencing pointer to incomplete type} \entry{unknown escape sequence}{115}{unknown escape sequence} \entry{suggest parentheses around assignment used as truth value}{116}{suggest parentheses around assignment used as truth value} \entry{control reaches end of non-void function}{116}{control reaches end of non-void function} \entry{unused variable warning}{117}{unused variable warning} \entry{unused parameter warning}{117}{unused parameter warning} \entry{passing arg of function as another type to prototype}{117}{passing arg of function as another type to prototype} \entry{assignment of read-only location}{118}{assignment of read-only location} \entry{cast discards qualifiers from pointer target type}{118}{cast discards qualifiers from pointer target type} \entry{assignment discards qualifiers}{118}{assignment discards qualifiers} \entry{initialization discards qualifiers}{118}{initialization discards qualifiers} \entry{return discards qualifiers}{118}{return discards qualifiers} \entry{initializer element is not a constant}{118}{initializer element is not a constant} \entry{linker, error messages}{119}{linker, error messages} \entry{file not recognized}{119}{file not recognized} \entry{file format not recognized}{119}{file format not recognized} \entry{undefined reference error}{119}{undefined reference error} \entry{collect2: ld returned 1 exit status}{119}{collect2: ld returned 1 exit status} \entry{ld returned 1 exit status}{119}{ld returned 1 exit status} \entry{undefined reference to 'main'}{120}{undefined reference to 'main'} \entry{runtime error messages}{120}{runtime error messages} \entry{error while loading shared libraries}{120}{error while loading shared libraries} \entry{cannot open shared object file}{120}{cannot open shared object file} \entry{No such file or directory}{120}{No such file or directory} \entry{segmentation fault}{120}{segmentation fault} \entry{bus error}{120}{bus error} \entry{null pointer}{120}{null pointer} \entry{uninitialized pointer}{120}{uninitialized pointer} \entry{scanf, incorrect usage warning}{120}{\code {scanf}, incorrect usage warning} \entry{floating point exception}{121}{floating point exception} \entry{illegal instruction error}{121}{illegal instruction error} \entry{getting help}{123}{getting help} \entry{support, commercial}{123}{support, commercial} \entry{commercial support}{123}{commercial support} \entry{enhancements, to GCC}{123}{enhancements, to GCC} \entry{manuals, for GNU software}{125}{manuals, for GNU software} \entry{Using GCC (Reference Manual)}{125}{Using GCC (Reference Manual)} \entry{GNU Compilers, Reference Manual}{125}{GNU Compilers, Reference Manual} \entry{GNU GDB Manual}{125}{GNU GDB Manual} \entry{GNU Make Manual}{125}{GNU Make Manual} \entry{GNU C Library Reference Manual}{125}{GNU C Library Reference Manual} \entry{GNU Press, manuals}{125}{GNU Press, manuals} \entry{shell quoting}{125}{shell quoting} \entry{reference books}{126}{reference books} \entry{C language, further reading}{126}{C language, further reading} \entry{books, further reading}{126}{books, further reading} \entry{Kernighan and Ritchie, The C Programming Language}{126}{Kernighan and Ritchie, \cite {The C Programming Language}} \entry{C library, standard}{126}{C library, standard} \entry{standards, C, C++ and IEEE arithmetic}{126}{standards, C, C++ and IEEE arithmetic} \entry{IEEE arithmetic standard, printed form}{126}{IEEE arithmetic standard, printed form} \entry{C/C++ languages, standards in printed form}{126}{C/C++ languages, standards in printed form} \entry{ISO standards for C/C++ languages, available as books}{126}{ISO standards for C/C++ languages, available as books} \entry{ANSI standards for C/C++ languages, available as books}{126}{ANSI standards for C/C++ languages, available as books} \entry{IEEE-754 standard}{126}{IEEE-754 standard}