3.3 Options Summarized by Function
In this section, the compiler options are grouped by function to provide a
quick reference. For a detailed description of each option, refer to Appendix A, C++ Compiler Options.
The options apply to all platforms except as noted; features that are unique
to the Oracle Solaris OS on SPARC-based systems are identified as SPARC,
and the features that are unique to the Oracle Solaris OS on x86-based
systems are identified as x86.
3.3.1 Code Generation Options
Table 3-2 Code Generation Options
|
|
-compat |
Sets the major release compatibility mode of
the compiler. |
-g |
Compiles for use with the debugger. |
-KPIC |
Produces position-independent code. |
-Kpic |
Produces position-independent code. |
-mt |
Compiles and
links for multithreaded code. |
-xaddr32 |
Restricts code to a 32–bit address space (x86/x64) |
-xarch |
Specifies the
target architecture. |
-xcode=a |
(SPARC) Specifies the code address space. |
-xlinker |
Specify linker options. |
-xMerge |
(SPARC) Merges the data
segment with the text segment. |
-xtarget |
Specifies the target system. |
-xmodel |
Modifies the form of 64-bit
objects for the Solaris x86 platforms |
+w |
Identifies code that might have unintended consequences. |
+w2 |
Emits
all the warnings emitted by +w plus warnings about technical violations that are
probably harmless but that might reduce the maximum portability of your program. |
-xregs |
The compiler
can generate faster code if it has more registers available for temporary storage
(scratch registers). This option makes available additional scratch registers that might not always
be appropriate. |
-z arg |
Linker option. |
|
3.3.2 Compile-Time Performance Options
Table 3-3 Compile-Time Performance Options
|
|
-instlib |
Inhibits the generation of template
instances that are already present in the designated library. |
-m32|-m64 |
Specifies the memory model for
the compiled binary object. |
-xinstrument |
Compiles and instruments your program for analysis by the
Thread Analyzer. |
-xjobs |
Sets the number of processes the compiler can create to complete
its work. |
-xpch |
Might reduce compile time for applications whose source files share a common set
of include files. |
-xpchstop |
Specifies the last include file to be considered in creating
a precompiled header file with -xpch. |
-xprofile_ircache |
(SPARC) Reuses compilation data saved during -xprofile=collect. |
-xprofile_pathmap |
(SPARC) Support
for multiple programs or shared libraries in a single profile directory. |
|
3.3.3 Compile-Time and Link-Time Options
The following table lists the options that must be specified both at link-time
and at compile-time.
Table 3-4 Compile-Time and Link-Time Options
|
|
-fast |
Selects the optimum combination of compilation options
for speed of executable code. |
-m32|-m64 |
Specifies the memory model for the compiled binary object. |
-mt |
Macro
option that expands to -D_REENTRANT -lthread. |
-xarch |
Specifies the instruction set architecture. |
-xautopar |
Turns on automatic
parallelization for multiple processors. |
-xhwcprof |
(SPARC) Enables compiler support for hardware counter-based profiling. |
-xipo |
Performs whole-program
optimizations by invoking an interprocedural analysis component. |
-xlinker |
Specify linker options |
-xlinkopt |
Performs link-time optimizations on relocatable
object files. |
-xmemalign |
(SPARC) Specifies the maximum assumed memory alignment and behavior of misaligned data
accesses. |
-xopenmp |
Supports the OpenMP interface for explicit parallelization including a set of source code
directives, runtime library routines, and environment variables |
-xpagesize |
Sets the preferred page size for the
stack and the heap. |
-xpagesize_heap |
Sets the preferred page size for the heap. |
-xpagesize_stack |
Sets the
preferred page size for the stack. |
-xpg |
Prepares the object code to collect data
for profiling with gprof(1). |
-xprofile |
Collects data for a profile or uses a profile
to optimize. |
-xvector=lib |
Enables automatic generation of calls to the vector library functions. |
|
3.3.4 Debugging Options
Table 3-5 Debugging Options
|
|
-### |
Equivalent to -dryrun |
+d |
Does not expand C++ inline functions. |
-dryrun |
Shows shows all commands
that the driver would issue to all components of the compilation. |
-E |
Runs only the
preprocessor on the C++ source files and sends the result to stdout. Does
not compile. |
-g |
Compiles for use with the debugger. |
-g0 |
Compiles for debugging but doesn’t disable
inlining. |
-H |
Prints path names of included files. |
-keeptmp |
Retains temporary files created during compilation. |
-P |
Only preprocesses
source; outputs to .i file. |
-Qoption |
Passes an option directly to a compilation phase. |
-s |
Strips
the symbol table out of the executable file, thus preventing the ability to
debug code. |
-temp=dir |
Defines the directory for temporary files. |
-verbose=vlst |
Controls compiler verbosity. |
-xcheck |
Adds a runtime check
for stack overflow. |
-xdumpmacros |
Prints information about macros such as definition, location defined and undefined,
and locations used. |
-xe |
Only checks for syntax and semantic errors. |
-xhelp=flags |
Displays a summary list
of compiler options. |
-xport64 |
Warns against common problems during a port from a 32-bit
architecture to a 64-bit architecture. |
|
3.3.5 Floating-Point Options
Table 3-6 Floating-Point Options
|
|
-fma |
(SPARC) Enables automatic generation of floating-point, fused, and multiply-add instructions. |
-fns[={no|yes}] |
(SPARC)
Disables or enables the SPARC nonstandard floating-point mode. |
-fprecision=p |
x86: Sets floating-point precision
mode. |
-fround=r |
Sets IEEE rounding mode in effect at startup. |
-fsimple=n |
Sets floating-point optimization preferences. |
-fstore |
x86: Forces
precision of floating-point expressions. |
-ftrap=tlst |
Sets the IEEE trapping mode in effect at startup. |
-nofstore |
x86:
Disables forced precision of expression. |
-xlibmieee |
Causes libm to return IEEE 754 values for
math routines in exceptional cases. |
|
3.3.6 Language Options
Table 3-7 Language Options
|
|
-compat |
Sets the major release compatibility mode of the compiler. |
-features=alst |
Enables
or disables various C++ language features. |
-xchar |
Eases the migration of code from systems
where the char type is defined as unsigned. |
-xldscope |
Controls the default linker scope of
variable and function definitions to create faster and safer shared libraries. |
-xthreadvar |
(SPARC) Changes
the default thread-local storage access mode. |
-xtrigraphs |
Enables recognition of trigraph sequences. |
-xustr |
Enables recognition of
string literals composed of sixteen-bit characters. |
|
3.3.7 Library Options
Table 3-8 Library Options
|
|
-Bbinding |
Requests symbolic, dynamic, or static library linking. |
-d{y|n} |
Allows
or disallows dynamic libraries for the entire executable. |
-G |
Builds a dynamic shared library
instead of an executable file. |
-hname |
Assigns an internal name to the generated dynamic
shared library. |
-i |
Tells ld(1) to ignore any LD_LIBRARY_PATH setting. |
-Ldir |
Adds dir to the list
of directories to be searched for libraries. |
-llib |
Adds liblib.a or liblib.so to the linker’s library
search list. |
-library=llst |
Forces inclusion of specific libraries and associated files into compilation and linking. |
-mt |
Compiles
and links for multithreaded code. |
-norunpath |
Does not build the path for libraries into
the executable file. |
-Rplst |
Builds dynamic library search paths into the executable file. |
-staticlib=llst |
Indicates which
C++ libraries are to be linked statically. |
-xar |
Creates archive libraries. |
-xbuiltin[=opt] |
Enables or disables better
optimization of standard library calls |
-xia |
(Solaris) Links the appropriate interval arithmetic libraries
and sets a suitable floating-point environment. |
-xlang=l[,l] |
Includes the appropriate runtime libraries and ensures the
proper runtime environment for the specified language. |
-xlibmieee |
Causes libm to return IEEE 754 values
for math routines in exceptional cases. |
-xlibmil |
Inlines selected libm library routines for optimization. |
-xlibmopt |
Uses a
library of optimized math routines. |
-xnolib |
Disables linking with default system libraries. |
-xnolibmil |
Cancels– xlibmil on the
command line. |
-xnolibmopt |
Does not use the math routine library. |
|
3.3.8 Obsolete Options
Note - The following options are either currently obsolete and so no longer accepted by
the compiler, or are likely to be removed in a future release.
Table 3-9 Obsolete Options
|
|
-features=[%all|%none] |
Obsolete suboptions %all and %none. |
-library=%all |
Obsolete suboption that is likely to be removed
in a future release. |
-xlic_lib=sunperf |
Use —library=sunperf to link to the Sun Performance Library. |
-xlicinfo |
Deprecated. |
-xnativeconnect |
Obsolete, there
is no alternative option. |
-xprefetch=yes |
Use -xprefetch=auto,explicit instead. |
-xprefetch=no |
Use -xprefetch=no%auto,no%explicit instead. |
-xvector=yes |
Use -xvector=lib instead. |
-xvector=no |
Use -xvector=none instead. |
|
3.3.9 Output Options
Table 3-10 Output Options
|
|
-c |
Compiles only; produces
object (.o) files, but suppresses linking. |
-dryrun |
Shows all the command lines issued by the
driver to the compiler but does not compile. |
-E |
Runs only the preprocessor on the
C++ source files and sends the result to stdout. Does not compile. |
-erroff |
Suppresses compiler
warning messages. |
-errtags |
Displays the message tag for each warning message. |
-errwarn |
If the indicated warning
message is issued, compiler exits with a failure status. |
-filt |
Suppresses the filtering that the
compiler applies to linker error messages. |
–G |
Builds a dynamic shared library instead of
an executable file. |
–H |
Prints the path names of included files. |
–migration |
Explains where to get
information about migrating from earlier compilers. |
–o filename |
Sets name of the output or
executable file to filename. |
–P |
Only preprocesses source; outputs to .i file. |
–Qproduce sourcetype |
Causes the
CC driver to produce output of the type sourcetype. |
–s |
Strips the symbol table
out of the executable file. |
–verbose=vlst |
Controls compiler verbosity. |
+w |
Prints extra warnings where necessary. |
+w2 |
Prints still
more warnings where appropriate. |
–w |
Suppresses warning messages. |
-xdumpmacros |
Prints information about macros such as definition,
location defined and undefined, and locations used. |
-xe |
Performs only syntax and semantic checking on
the source file but does not produce any object or executable code. |
–xhelp=flags |
Displays a
summary list of compiler options |
–xM |
Outputs makefile dependency information. |
–xM1 |
Generates dependency information, but excludes
/usr/include |
–xtime |
Reports execution time for each compilation phase. |
–xwe |
Converts all warnings to errors. |
-z arg |
Linker
option. |
|
3.3.10 Run-Time Performance Options
Table 3-11 Run-Time Performance Options
|
|
–fast |
Selects a combination of compilation options for optimum execution speed for some
programs. |
-fma |
(SPARC) Enables automatic generation of floating-point, fused, multiply-add instructions. |
-g |
Instructs both the compiler and
the linker to prepare the program for performance analysis (and for debugging). |
-s |
Strips the
symbol table out of the executable. |
-m32|-m64 |
Specifies the memory model for the compiled
binary object. |
-xalias_level |
Enables the compiler to perform type-based alias analysis and optimizations. |
-xarch=isa |
Specifies target
architecture instruction set. |
-xbinopt |
Prepares the binary for later optimizations, transformations, and analysis. |
-xbuiltin[=opt] |
Enables or
disables better optimization of standard library calls |
-xcache=c |
(SPARC) Defines target cache properties
for the optimizer. |
-xchip=c |
Specifies target processor chip. |
-xF |
Enables linker reordering of functions and variables. |
-xinline=flst |
Specifies
which user-written routines can be inlined by the optimizer |
-xipo |
Performs interprocedural optimizations. |
-xlibmil |
Inlines selected
libm library routines for optimization. |
-xlibmopt |
Uses a library of optimized math routines. |
-xlinkopt |
(SPARC)
Performs link-time optimization on the resulting executable or dynamic library in addition to
any optimizations in the object files. |
-xmemalign=ab |
(SPARC) Specifies maximum assumed memory alignment
and behavior of misaligned data accesses. |
-xnolibmil |
Cancels– xlibmil on the command line. |
-xnolibmopt |
Does not use the
math routine library. |
-xOlevel |
Specifies optimization level to level. |
-xpagesize |
Sets the preferred page size for
the stack and the heap. |
-xpagesize_heap |
Sets the preferred page size for the heap. |
-xpagesize_stack |
Sets
the preferred page size for the stack. |
-xprefetch[=lst] |
Enables prefetch instructions on architectures that
support prefetch. |
-xprefetch_level |
Control the aggressiveness of automatic insertion of prefetch instructions as set by -xprefetch=auto |
-xprofile |
Collects
or optimizes using runtime profiling data. |
-xregs=rlst |
Controls scratch register use. |
-xsafe=mem |
(SPARC) Allows no
memory-based traps. |
-xspace |
(SPARC) Does not allow optimizations that increase code size. |
-xtarget=t |
Specifies a
target instruction set and optimization system. |
-xthreadvar |
Changes the default thread-local storage access mode. |
-xunroll=n |
Enables
unrolling of loops where possible. |
-xvis |
(SPARC) Enables compiler recognition of the assembly-language
templates defined in the VIS instruction set |
|
3.3.11 Preprocessor Options
Table 3-12 Preprocessor Options
|
|
-Dname[=def] |
Defines symbol name to the preprocessor. |
-E |
Runs only
the preprocessor on the C++ source files and sends the result to stdout.
Does not compile. |
-H |
Prints the path names of included files. |
-P |
Only preprocesses source; outputs
to .i file. |
-Uname |
Deletes initial definition of preprocessor symbol name. |
-xM |
Outputs makefile dependency information. |
-xM1 |
Generates
dependency information but excludes /usr/include. |
|
3.3.12 Profiling Options
Table 3-13 Profiling Options
|
|
-p |
Prepares the object code to collect data for
profiling using prof. |
-xpg |
Compiles for profiling with the gprof profiler. |
-xprofile |
Collects or optimizes using
runtime profiling data. |
|
3.3.13 Reference Options
Table 3-14 Reference Options
|
|
-xhelp=flags |
Displays a summary list of compiler options. |
|
3.3.14 Source Options
Table 3-15 Source Options
|
|
-H |
Prints the path names
of included files. |
-Ipathname |
Adds pathname to the include file search path. |
-I- |
Changes the include-file search
rules |
-xM |
Outputs makefile dependency information. |
-xM1 |
Generates dependency information but excludes /usr/include. |
|
3.3.15 Template Options
Table 3-16 Template Options
|
|
-instances=a |
Controls the placement and
linkage of template instances. |
-template=wlst |
Enables or disables various template options. |
|
3.3.16 Thread Options
Table 3-17 Thread Options
|
|
-mt |
Compiles and links for multithreaded code. |
-xsafe=mem |
(SPARC)
Allows no memory-based traps. |
-xthreadvar |
(SPARC) Changes the default thread-local storage access mode. |
|