Oracle Solaris Studio 12.2:C++ 用户指南

3.3 按功能汇总的选项

在本节中,编译器选项按功能分组以便提供快速参考。有关各个选项的详细说明,请参阅附录 A

这些选项适用于除了特别注明之外的所有平台;基于 SPARC 的系统上的 Solaris OS 特有的功能标识为 SPARC,基于 x86 的系统上的 Solaris OS 特有的功能标识为 x86

3.3.1 代码生成选项

表 3–2 代码生成选项

选项 

操作  

–compat

设置编译器的主发行版本兼容模式。 

+e{0|1}

控制虚拟表的生成。 

–g

用于与调试一起使用的编译。 

–KPIC

生成位置独立的代码。 

–Kpic

生成位置独立的代码。 

–mt

编译和链接多线程代码。 

-xaddr32

将代码限定于 32 位地址空间 (x86/x64) 

-xarch

指定目标体系结构。 

–xcode=a

(SPARC) 指定代码地址空间。 

–xMerge

(SPARC) 将数据段和文本段合并。 

-xtarget

指定目标系统。 

–xmodel

针对 Solaris x86 平台修改 64 位对象形式 

+w

标识可能产生不可预料结果的代码。 

+w2

发出由 +w 发出的所有警告以及关于技术违规的警告,这些技术违规可能是无害的,但可能会降低程序的最大可移植性。

-xregs

如果编译器可以使用更多的寄存器用于临时存储(临时寄存器),那么编译器将能生成速度更快的代码。该选项使得附加临时寄存器可用,而这些附加寄存器通常是不适用的。 

-z arg

链接程序选项。 

3.3.2 编译时性能选项

表 3–3 编译时性能选项

选项 

操作  

–instlib

禁止生成已出现在指定库中的模板实例。 

-m32|-m64

指定编译的二进制对象的内存模型。 

-xinstrument

编译程序并为其提供程序设备以便 Thread Analyzer 对其进行分析。 

–xjobs

设置编译器可以为完成工作而创建的进程数量。 

–xpch

可以减少应用程序的编译时间,该应用程序的源文件共享一组共同的 include 文件。 

–xpchstop

指定在使用 -xpch 选项创建预编译头文件时要考虑的最后一个 include 文件。

–xprofile_ircache

(SPARC) 重新使用在执行 -xprofile=collect 期间保存的编译数据。

–xprofile_pathmap

(SPARC) 支持单个配置文件目录中有多个程序或共享库。 

3.3.3 编译时选项和链接时选项

下表列出了在链接时和编译时均必须指定的选项。

表 3–4 编译时选项和链接时选项

选项  

操作  

-fast

选择用于控制可执行代码速度的编译选项的最优组合。 

-m32|-m64

指定编译的二进制对象的内存模型。 

-mt

扩展为 -D_REENTRANT -lthread 的宏选项。

-xarch

指定指令集体系结构。 

-xautopar

为多个处理器启用自动并行化。 

-xhwcprof

(SPARC) 为基于硬件技术器的文件配置启用编译器支持。 

-xipo

通过调用过程间分析组件来执行整个程序优化。 

-xlinkopt

对可重定位对象文件执行链接时优化。 

-xmemalign

(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。 

-xopenmp

支持用于显式并行化的 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。 

-xpagesize

设置栈和堆的首选页面大小。 

-xpagesize_heap

设置堆的首选页面大小。 

-xpagesize_stack

设置栈的首选页面大小。 

-xpg

准备目标代码来收集数据以使用 gprof(1) 进行文件配置。

-xprofile

收集用于配置文件的数据或使用配置文件进行优化。 

-xvector=lib

启用对向量库函数调用的自动生成。 

3.3.4 调试选项

表 3–5 调试选项

选项  

操作  

+d

不扩展 C++ 内联函数。 

–dryrun

显示但不编译由驱动程序传递到编译器的选项。 

–E

仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。

–g

用于与调试一起使用的编译。 

–g0

编译以便进行调试,但不禁用内联。 

–H

输出包含文件的路径名称。 

–keeptmp

保留编译时创建的临时文件。 

–migration

解释可以从早期编译器获得有关移植信息的位置。 

–P

仅预处理源文件,输出到 .i 文件。

–Qoption

直接将选项传递到编译阶段。 

–readme

显示联机 README 文件的内容。

–s

从可执行文件中去掉符号表,这样可以保护调试代码的能力。 

–temp=dir

为临时文件定义目录。 

–verbose=vlst

控制编译器详细内容。 

-xcheck

对栈溢出增加一个运行时检查。 

-xdumpmacros

输出诸如定义、定义及未定义的位置和已使用的位置的宏信息。 

–xe

仅检查语法和语义错误。 

–xhelp=flags

显示编译器选项汇总列表。 

–xport64

对 32 位体系结构到 64 位体系结构的移植过程中的常见问题发出警告。 

3.3.5 浮点选项

表 3–6 浮点选项

选项 

操作 

-fma

(SPARC) 启用自动生成浮点乘加指令。 

–fns[={no|yes}]

(SPARC) 禁用或启用 SPARC 非标准浮点模式。 

–fprecision=p

x86:设置浮点精度模式。

–fround=r

设置启动时生效的 IEEE 舍入模式。 

–fsimple=n

设置浮点优化首选项。 

–fstore

x86:强制浮点表达式的精度。

–ftrap=tlst

设置启动时生效的 IEEE 陷阱操作模式。 

–nofstore

x86:禁用表达式的强制精度。

–xlibmieee

使 libm 在异常情况下对于数学例程返回 IEEE 754 值。

3.3.6 语言选项

表 3–7 语言选项

选项 

操作 

–compat

设置编译器的主发行版本兼容模式。 

–features=alst

启用或禁用各种 C++ 语言特性。 

-xchar

在 char 类型定义为无符号的系统上,简化代码的移植。 

–xldscope

控制变量和函数定义的缺省链接程序范围,以创建更快更安全的共享库。 

–xthreadvar

(SPARC) 更改缺省的线程局部存储访问模式。 

-xtrigraphs

启用三字母序列的识别。 

–xustr

启用识别由 16 位字符构成的文本字符串。 

3.3.7 库选项

表 3–8 库选项

选项 

操作 

–Bbinding

请求符号、动态或静态库链接。 

–d{y|n}

允许或不允许整个可执行文件的动态库。 

–G

生成动态共享库来取代可执行文件。 

–hname

为生成的动态共享库指定内部名称。 

–i

通知 ld(1) 忽略任何 LD_LIBRARY_PATH 设置。

–Ldir

dir 添加到要在其中搜索库的目录列表。

–llib

liblib.aliblib.so 添加到链接程序的库搜索列表。

–library=llst

强制将特定库和相关文件包含到编译和链接中。 

–mt

编译和链接多线程代码。 

–norunpath

不将库的路径生成到可执行文件中。 

–Rplst

将动态库搜索路径生成到可执行文件中。 

–staticlib=llst

说明哪些 C++ 库是静态链接的。 

–xar

创建归档库。 

-xbuiltin[=opt]

启用或禁用标准库调用的更多优化。 

-xia

(Solaris) 链接合适的区间运算库并设置适当的浮点环境。 

-xlang=l[,l]

包含适当的运行库,并确保指定语言的正确运行时环境。 

–xlibmieee

使 libm 在异常情况下对于数学例程返回 IEEE 754 值。

–xlibmil

内联选定的 libm 库例程以进行优化。

–xlibmopt

使用优化数学例程的库。 

–xnolib

禁止链接缺省系统库。 

–xnolibmil

在命令行上取消 – xlibmil

–xnolibmopt

不使用数学例程库。 

3.3.8 废弃的选项


注 –

以下选项要么当前已废弃所以编译器不再接受它们,要么将从以后的发行版中删除。


表 3–9 废弃的选项

选项 

操作  

-library=%all

废弃的选项,在以后的发行版本中将被删除。 

-xlic_lib=sunperf

使用 —library=sunperf 可链接到 Sun 性能库。

-xlicinfo

已过时。 

–noqueue

禁用许可证队列。 

-ptr

编译器忽略。以后的编译器发行版本可以使用其他行为来重用该选项。 

-sb、—sbfast、—xsb、—xsbfast

已过时,默认忽略。 

-vdelx

废弃的选项,在以后的发行版本中将被删除。 

-x386

使用适当的 —xtarget 选项。

-x486

使用适当的 —xtarget 选项。

-xcg89

使用 -xtarget=ss2

-xcrossfile

改用 -xipo

-xnativeconnect

已废弃,没有替代选项。 

-xprefetch=yes

改用 -xprefetch=auto,explicit

-xprefetch=no

改用 -xprefetch=no%auto,no%explicit

-xvector=yes

改用 -xvector=lib

-xvector=no

改用 -xvector=none

3.3.9 输出选项

表 3–10 输出选项

选项 

操作 

–c

仅编译;生成目标 (.o) 文件,但抑制链接。

–dryrun

显示但不编译由驱动程序传递到编译器的所有命令行。 

–E

仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。

-erroff

禁止编译器警告消息。 

-errtags

显示每条警告消息的消息标记。 

-errwarn

如果发出指示的警告消息,cc 将以失败状态退出。 

-filt

禁止编译器应用到链接程序错误消息的过滤。 

–G

生成动态共享库来取代可执行文件。 

–H

输出包含文件的路径名称。 

–migration

解释可以从早期编译器获得有关移植信息的位置。 

–o filename

将输出文件或可执行文件的名称设置为 filename

–P

仅预处理源文件,输出到 .i 文件。

–Qproduce sourcetype

使 CC 驱动程序生成类型为 sourcetype 的输出。

–s

从可执行文件去掉符号表。 

–verbose=vlst

控制编译器详细内容。 

+w

必要时输出附加警告。 

+w2

适当时输出更多警告。 

–w

禁止警告消息。 

-xdumpmacros

输出诸如定义、定义及未定义的位置和已使用的位置的宏信息。 

-xe

对源文件仅执行语法和语义检查,但不生成任何对象或可执行代码。 

–xhelp=flags

显示编译器选项汇总列表。 

–xhelp=readme

显示联机 README 文件的内容。

–xM

输出 makefile 依赖性信息。 

–xM1

生成依赖性信息,但排除  

/usr/include

–xtime

报告每个编译阶段的执行时间。 

–xwe

将所有的警告转换为错误。 

-z arg

链接程序选项。 

3.3.10 运行时性能选项

表 3–11 运行时性能选项

选项 

操作  

–fast

选择编译选项的组合以优化某些程序的执行速度。 

-fma

(SPARC) 启用自动生成浮点乘加指令。 

-g

指示编译器和链接程序准备程序以进行性能分析(以及调试)。 

–s

从可执行文件去掉符号表。 

-m32|-m64

指定编译的二进制对象的内存模型。 

-xalias_level

启用编译器执行基于类型的别名分析和优化。 

–xarch=isa

指定目标体系结构指令集。 

-xbinopt

准备二进制文件以便以后进行优化、转换和分析。 

-xbuiltin[=opt]

启用或禁用标准库调用的更多优化。 

–xcache=c

(SPARC) 定义优化器的目标高速缓存属性。 

–xcg89

为通用 SPARC v7 体系结构编译。 

–xcg92

为 SPARC V8 体系结构编译。 

–xchip=c

指定目标处理器芯片。 

–xF

启用函数和变量的链接程序重新排序。 

-xinline=flst

指定用户编写的哪些例程可以被优化器内联 

-xipo

执行过程间的优化。 

–xlibmil

内联选定的 libm 库例程以进行优化。

–xlibmopt

使用优化数学例程的库。 

–xlinkopt

(SPARC) 在对目标文件进行优化的基础上对生成的可执行文件或动态库执行链接时优化。 

–xmemalign=ab

(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。 

–xnolibmil

在命令行上取消 – xlibmil

–xnolibmopt

不使用数学例程库。 

–xOlevel

将优化级别指定为 level

–xpagesize

设置栈和堆的首选页面大小。 

-xpagesize_heap

设置堆的首选页面大小。 

-xpagesize_stack

设置栈的首选页面大小。 

-xprefetch[=lst]

在支持预取的体系结构上启用预取指令。 

-xprefetch_level

控制 -xprefetch=auto 设置的自动插入预取指令的主动性。

–xprofile

收集运行时文件配置数据或使用运行时文件配置数据进行优化。 

–xregs=rlst

控制临时寄存器的使用。 

–xsafe=mem

(SPARC) 不允许有基于内存的陷阱。 

–xspace

(SPARC) 不允许会增大代码大小的优化。 

–xtarget=t

指定目标指令集和优化系统。 

–xthreadvar

更改缺省的线程局部存储访问模式。 

–xunroll=n

启用在可能的场合下解开循环。 

–xvis

(SPARC) 使编译器可以识别 VIS 指令集中定义的汇编语言模板。 

3.3.11 预处理程序选项

表 3–12 预处理程序选项

选项 

操作 

–Dname[= def]

为预处理程序定义符号 name

–E

仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。

-H

输出包含文件的路径名称。 

–P

仅预处理源文件,输出到 .i 文件。

–Uname

删除预处理程序符号 name 的初始定义。

–xM

输出 makefile 依赖性信息。 

–xM1

生成依赖性信息,但排除 /usr/include

3.3.12 文件配置选项

表 3–13 文件配置选项

选项 

操作 

–p

准备目标代码来收集数据以使用 prof 进行文件配置。

–xpg

编译以便使用 gprof 配置程序进行文件配置。

–xprofile

收集运行时文件配置数据或使用运行时文件配置数据进行优化。 

3.3.13 参考选项

表 3–14 参考选项

选项 

操作 

–migration

解释可以从早期编译器获得有关移植信息的位置。 

–xhelp=flags

显示编译器选项汇总列表。 

–xhelp=readme

显示联机 README 文件的内容。

3.3.14 源文件选项

表 3–15 源文件选项

选项 

操作 

-H

输出包含文件的路径名称。 

–Ipathname

pathname 添加到 include 文件搜索路径。

-I-

更改包含文件搜索规则 

–xM

输出 makefile 依赖性信息。 

–xM1

生成依赖性信息,但排除 /usr/include

3.3.15 模板选项

表 3–16 模板选项

选项 

操作 

–instances=a

控制模板实例的放置和链接。 

–template=wlst

启用或禁用各种模板选项。 

3.3.16 线程选项

表 3–17 线程选项

选项  

操作  

–mt

编译和链接多线程代码。 

–xsafe=mem

(SPARC) 不允许有基于内存的陷阱。 

–xthreadvar

(SPARC) 更改缺省的线程局部存储访问模式。