iii
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Programming Languages Supported by GCC
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Language Standards Supported by GCC . . . . . 5
2.1 C language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 C++ language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Objective-C and Objective-C++ languages . . . . . . . . . . . . . . . . . . . . . 7
2.4 Go language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 References for other languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 GCC Command Options . . . . . . . . . . . . . . . . . . . . . . . 9
3.1 Option Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Options Controlling the Kind of Output . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Compiling C++ Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Options Controlling C Dialect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5 Options Controlling C++ Dialect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6 Options Controlling Objective-C and Objective-C++ Dialects . . 46
3.7 Options to Control Diagnostic Messages Formatting . . . . . . . . . . . 49
3.8 Options to Request or Suppress Warnings . . . . . . . . . . . . . . . . . . . . . 50
3.9 Options for Debugging Your Program or GCC . . . . . . . . . . . . . . . . . 74
3.10 Options That Control Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.11 Options Controlling the Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . 148
3.12 Passing Options to the Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
3.13 Options for Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.14 Options for Directory Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
3.15 Specifying subprocesses and the switches to pass to them . . . . 165
3.16 Specifying Target Machine and Compiler Version . . . . . . . . . . . . 173
3.17 Hardware Models and Configurations . . . . . . . . . . . . . . . . . . . . . . . 173
3.17.1 AArch64 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.17.1.1 ‘-march’ and ‘-mcpu’ feature modifiers. . . . . . . . . . . . . 174
3.17.2 Adapteva Epiphany Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
3.17.3 ARM Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
3.17.4 AVR Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
3.17.4.1 EIND and Devices with more than 128 Ki Bytes of Flash
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
3.17.4.2 Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special
Function Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
3.17.4.3 AVR Built-in Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
3.17.5 Blackfin Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
3.17.6 C6X Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193