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 Solaris OS on SPARC-based systems are identified as SPARC, and
the features that are unique to the 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. |
+e{0|1} |
Controls
virtual table generation. |
–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 |
Restrict code to 32–bit address space (x86/x64) |
-xarch |
Specify target
architecture. |
–xcode=a |
(SPARC) Specifies the code address space. |
–xMerge |
(SPARC) Merges the data segment with the
text segment. |
-xtarget |
Specify 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 |
May 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 pre-compiled 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 |
Specify 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. |
-xlinkopt |
Performs link-time optimizations on relocatable object files. |
-xmemalign |
(SPARC) Specify
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, run-time 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 |
Enable automatic generation
of calls to the vector library functions. |
|
3.3.4 Debugging Options
Table 3-5 Debugging Options
|
|
+d |
Does not expand
C++ inline functions. |
–dryrun |
Shows options passed by the driver to the compiler, but
does not compile. |
–E |
Runs only the preprocessor on the C++ source files and
sends 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. |
–migration |
Explains where to get information about migrating from earlier compilers. |
–P |
Only
preprocesses source; outputs to .i file. |
–Qoption |
Passes an option directly to a compilation
phase. |
–readme |
Displays the content of the online README file. |
–s |
Strips the symbol table out
of the executable file, thus preventing the ability to debug code. |
–temp=dir |
Defines 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, 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 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
path for libraries into executable. |
–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 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 they will be removed in a future release.
Table 3-9 Obsolete Options
|
|
-library=%all |
Obsolete
option that will be removed in a future release. |
-xlic_lib=sunperf |
Use —library=sunperf to link
to the Sun Performance Library. |
-xlicinfo |
Deprecated. |
–noqueue |
Disables license queueing. |
-ptr |
Ignored by the compiler. A future release
of the compiler may reuse this option using a different behavior. |
-sb, —sbfast, —xsb, —xsbfast |
Deprecated and silently
ignored. |
-vdelx |
Obsolete option that will be removed in a future release. |
-x386 |
Use an appropriate
—xtarget option. |
-x486 |
Use an appropriate —xtarget option. |
-xcg89 |
Use -xtarget=ss2 |
-xcrossfile |
Use -xipo instead. |
-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 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,
cc 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
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 |
Print 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 |
–xhelp=readme |
Displays the contents of the online README file. |
–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. |
–xcg89 |
Compiles for generic SPARC v7 architecture. |
–xcg92 |
Compiles for SPARC
V8 architecture. |
–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 over and above any
optimizations in the object files. |
–xmemalign=ab |
(SPARC) Specify 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 result to stdout. Does not
compile. |
-H |
Prints 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
|
|
–migration |
Explains
where to get information about migrating from earlier compilers. |
–xhelp=flags |
Displays a summary list
of compiler options. |
–xhelp=readme |
Displays the contents of the online README file. |
|
3.3.14 Source Options
Table 3-15 Source Options
|
|
-H |
Prints 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. |
|