3.2 Switches for gcc
The gcc
command accepts switches that control the
compilation process. These switches are fully described in this section.
First we briefly list all the switches, in alphabetical order, then we
describe the switches in more detail in functionally grouped sections.
-b
target- Compile your program to run on target, which is the name of a
system configuration. You must have a GNAT cross-compiler built if
target is not the same as your host system.
-B
dir- Load compiler executables (for example,
gnat1
, the Ada compiler)
from dir instead of the default location. Only use this switch
when multiple versions of the GNAT compiler are available. See the
gcc
manual page for further details. You would normally use the
-b
or -V
switch instead.
-c
- Compile. Always use this switch when compiling Ada programs.
Note: for some other languages when using gcc
, notably in
the case of C and C++, it is possible to use
use gcc
without a -c
switch to
compile and link in one step. In the case of GNAT, you
cannot use this approach, because the binder must be run
and gcc
cannot be used to run the GNAT binder.
-g
- Generate debugging information. This information is stored in the object
file and copied from there to the final executable file by the linker,
where it can be read by the debugger. You must use the
-g
switch if you plan on using the debugger.
-I
dir- Direct GNAT to search the dir directory for source files needed by
the current compilation
(see Search Paths and the Run-Time Library (RTL)).
-I-
- Except for the source file named in the command line, do not look for source files
in the directory containing the source file named in the command line
(see Search Paths and the Run-Time Library (RTL)).
-o
file- This switch is used in
gcc
to redirect the generated object file
and its associated ALI file. Beware of this switch with GNAT, because it may
cause the object file and ALI file to have different names which in turn
may confuse the binder and the linker.
-O[
n]
- n controls the optimization level.
- n = 0
- No optimization, the default setting if no
-O
appears
- n = 1
- Normal optimization, the default if you specify
-O
without
an operand.
- n = 2
- Extensive optimization
- n = 3
- Extensive optimization with automatic inlining. This applies only to
inlining within a unit. For details on control of inter-unit inlining
see See Subprogram Inlining Control.
--RTS=
rts-path- Specifies the default location of the runtime library. Same meaning as the
equivalent
gnatmake
flag (see Switches for gnatmake).
-S
- Used in place of
-c
to
cause the assembler source file to be
generated, using .s as the extension,
instead of the object file.
This may be useful if you need to examine the generated assembly code.
-v
- Show commands generated by the
gcc
driver. Normally used only for
debugging purposes or if you need to be sure what version of the
compiler you are executing.
-V
ver- Execute ver version of the compiler. This is the
gcc
version, not the GNAT version.
-gnata
- Assertions enabled.
Pragma Assert
and pragma Debug
to be
activated.
-gnatA
- Avoid processing gnat.adc. If a gnat.adc file is present, it will be ignored.
-gnatb
- Generate brief messages to stderr even if verbose mode set.
-gnatc
- Check syntax and semantics only (no code generation attempted).
-gnatC
- Compress debug information and external symbol name table entries.
-gnatD
- Output expanded source files for source level debugging. This switch
also suppress generation of cross-reference information (see -gnatx).
-gnatec
path- Specify a configuration pragma file. (see The Configuration Pragmas Files)
-gnatem
path- Specify a mapping file. (see Units to Sources Mapping Files)
-gnatE
- Full dynamic elaboration checks.
-gnatf
- Full errors. Multiple errors per line, all undefined references.
-gnatF
- Externals names are folded to all uppercase.
-gnatg
- Internal GNAT implementation mode. This should not be used for
applications programs, it is intended only for use by the compiler
and its run-time library. For documentation, see the GNAT sources.
-gnatG
- List generated expanded code in source form.
-gnati
c- Identifier character set
(c=1/2/3/4/8/9/p/f/n/w).
-gnath
- Output usage information. The output is written to stdout.
-gnatk
n- Limit file names to n (1-999) characters (
k
= krunch).
-gnatl
- Output full source listing with embedded error messages.
-gnatm
n- Limit number of detected errors to n (1-999).
-gnatn
- Activate inlining across unit boundaries for subprograms for which
pragma
inline
is specified.
-gnatN
- Activate front end inlining.
-fno-inline
- Suppresses all inlining, even if other optimization or inlining switches
are set.
-fstack-check
- Activates stack checking. See separate section on stack checking for
details of the use of this option.
-gnato
- Enable numeric overflow checking (which is not normally enabled by
default). Not that division by zero is a separate check that is not
controlled by this switch (division by zero checking is on by default).
-gnatp
- Suppress all checks.
-gnatq
- Don't quit; try semantics, even if parse errors.
-gnatQ
- Don't quit; generate ali and tree files even if illegalities.
-gnatP
- Enable polling. This is required on some systems (notably Windows NT) to
obtain asynchronous abort and asynchronous transfer of control capability.
See the description of pragma Polling in the GNAT Reference Manual for
full details.
-gnatR[0/1/2/3][s]
- Output representation information for declared types and objects.
-gnats
- Syntax check only.
-gnatt
- Tree output file to be generated.
-gnatT nnn
- Set time slice to specified number of microseconds
-gnatu
- List units for this compilation.
-gnatU
- Tag all error messages with the unique string "error:"
-gnatv
- Verbose mode. Full error output with source lines to stdout.
-gnatV
- Control level of validity checking. See separate section describing
this feature.
-gnatwxxx
xxx- Warning mode where
xxx is a string of options describing the exact warnings that
are enabled or disabled. See separate section on warning control.
-gnatW
e- Wide character encoding method
(e=n/h/u/s/e/8).
-gnatx
- Suppress generation of cross-reference information.
-gnaty
- Enable built-in style checks. See separate section describing this feature.
-gnatz
m- Distribution stub generation and compilation
(m=r/c for receiver/caller stubs).
-gnat83
- Enforce Ada 83 restrictions.
-pass-exit-codes
- Catch exit codes from the compiler and use the most meaningful as
exit status.
You may combine a sequence of GNAT switches into a single switch. For
example, the combined switch
-gnatofi3
is equivalent to specifying the following sequence of switches:
-gnato -gnatf -gnati3
The following restrictions apply to the combination of switches
in this manner:
- The switch -gnatc if combined with other switches must come
first in the string.
- The switch -gnats if combined with other switches must come
first in the string.
- Once a "y" appears in the string (that is a use of the -gnaty
switch), then all further characters in the switch are interpreted
as style modifiers (see description of -gnaty).
- Once a "d" appears in the string (that is a use of the -gnatd
switch), then all further characters in the switch are interpreted
as debug flags (see description of -gnatd).
- Once a "w" appears in the string (that is a use of the -gnatw
switch), then all further characters in the switch are interpreted
as warning mode modifiers (see description of -gnatw).
- Once a "V" appears in the string (that is a use of the -gnatV
switch), then all further characters in the switch are interpreted
as validity checking options (see description of -gnatV).