Oracle® Developer Studio 12.5:C++ 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

3.4 按功能汇总的选项

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

除非特别注明,否则这些选项适用于所有平台;基于 SPARC 的系统上的 Oracle Solaris OS 特有的功能标识为 (SPARC),基于 x86 的系统上的 Oracle Solaris OS 特有的功能标识为 (x86)。

3.4.1 代码生成选项

表 4  代码生成选项
选项
操作
-compat
设置编译器的兼容模式。
-g
编译以便用于调试器。
-KPIC
生成与位置无关的代码。
-Kpic
生成与位置无关的代码。
-mt
编译和链接多线程代码。
-xaddr32
将代码限定于 32 位地址空间 (x86/x64)。
-xarch
指定目标体系结构。
-xcode=a
(SPARC) 指定代码地址空间。
-xlinker
指定链接程序选项。
-xMerge
(SPARC) 将数据段和文本段合并。
-xtarget
指定目标系统。
-xmodel
针对 x86 平台修改 64 位对象的形式
+w
标识可能产生不可预料结果的代码。
+w2
发出由 +w 发出的所有警告以及关于技术违规的警告,这些技术违规可能是无害的,但可能会降低程序的最大可移植性。
-xregs
如果编译器可以使用更多的寄存器用于临时存储(临时寄存器),那么编译器将能生成速度更快的代码。该选项使得附加临时寄存器可用,而这些附加寄存器通常是不适用的。
-xsegment_align
使驱动程序在链接行上包括特殊映射文件。
-z arg
链接程序选项。

3.4.2 编译时性能选项

表 5  编译时性能选项
选项
操作
-instlib
禁止生成已出现在指定库中的模板实例。
-m32|-m64
指定编译的二进制对象的数据类型模型。
-xinstrument
编译并检测程序,以供线程分析器进行分析。
-xjobs
设置编译器可以为完成工作而创建的进程数量。
-xpch
可以减少应用程序的编译时间,这些应用程序的源文件共享一组通用的 include 文件。
-xpchstop
指定在使用 -xpch 选项创建预编译头文件时要考虑的最后一个 include 文件。
-xprofile_ircache
(SPARC) 重新使用在执行 -xprofile=collect 期间保存的编译数据。
-xprofile_pathmap
(SPARC) 支持单个分析目录中有多个程序或共享库。

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

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

表 6  编译时选项和链接时选项
选项
操作
–fast
选择用于控制可执行代码速度的编译选项的最优组合。
-fopenmp
-xopenmp=parallel 等效。
–m32|–m64
指定编译的二进制对象的数据类型模型。
–mt
扩展为 –D_REENTRANT –lthread 的宏选项。
-std
指定 C++ 语言版本和兼容性模式。
–xarch
指定指令集体系结构。
–xautopar
为多个处理器启用自动并行化。
–xhwcprof
为基于硬件计数器的分析启用编译器支持。
–xipo
通过调用过程间分析组件来执行整个程序优化。
-xipo_build
通过避免在初始传递期间通过编译器进行优化(仅在链接时优化)而缩短编译时间。
-xlinker
指定链接程序选项。
–xlinkopt
对可重定位对象文件执行链接时优化。
–xmemalign
(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。
–xopenmp
支持用于显式并行化的 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。
–xpagesize
设置堆栈和堆的首选页面大小。
–xpagesize_heap
设置堆的首选页面大小。
–xpagesize_stack
设置堆栈的首选页面大小。
-xpatchpadding
在各个函数启动之前保留内存区域。
–xpg
准备对象代码来收集数据以使用 gprof(1) 进行分析。
–xprofile
收集用于分析的数据或使用分析进行优化。
-xs
(Solaris) 将调试信息从对象文件链接到可执行文件。
–xvector=lib
启用对向量库函数调用的自动生成。

3.4.4 调试选项

表 7  调试选项
选项
操作
-###
-dryrun 等效。
+d
不扩展 C++ 内联函数。
-dryrun
显示驱动程序将向编译的所有组件发出的所有命令。
-E
仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。
-g
编译以便用于调试器。
-g0
编译以便进行调试,但不禁用内联。
-H
打印包含文件的路径名称。
-keeptmp
保留编译时创建的临时文件。
-P
仅预处理源文件,输出到 .i 文件。
-preserve_argvalues
(x86) 在堆栈中保存基于寄存器的函数参数的副本。
-Qoption
直接将选项传递到编译阶段。
-s
从可执行文件中去掉符号表,这样可以保护调试代码的能力。
-temp
为临时文件定义目录。
-verbose
控制编译器详细级别。
-xanalyze
生成能使用代码分析器查看的源代码静态分析。
-xcheck
对堆栈溢出增加一个运行时检查。
-xdebuginfo
编译以便用于调试器,指定发出多少调试详细信息。
-xdumpmacros
打印诸如定义、定义及未定义的位置和已使用的位置的宏信息。
-xe
仅检查语法和语义错误。
-xglobalize
控制文件静态变量的全局化,但是不控制函数的全局化。
-xhelp=flags
显示编译器选项汇总列表。
-xkeep_unref
保留未引用函数和变量的定义。
-xpatchpadding
在各个函数启动之前保留内存区域。
-xprevise
生成能使用代码分析器查看的源代码静态分析。
-xport64
对 32 位体系结构到 64 位体系结构的移植过程中的常见问题发出警告。
-xs
(Solaris) 将调试信息从对象文件链接到可执行文件。

3.4.5 浮点选项

表 8  浮点选项
选项
操作
-fma
启用自动生成浮点混合乘加指令。
-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.4.6 语言选项

表 9  语言选项
选项
操作
-compat
设置编译器的主发行版本兼容模式。
-features=alst
启用或禁用各种 C++ 语言特性。
-std
指定 C++ 语言版本。
-xchar
在 char 类型定义为无符号的系统上,简化代码的移植。
-xldscope
控制变量和函数定义的缺省链接程序范围,以创建更快更安全的共享库。
-xthreadvar
(SPARC) 更改缺省的线程局部存储访问模式。
-xtrigraphs
启用三字母序列的识别。
-xustr
启用识别由 16 位字符构成的文本字符串。

3.4.7 库选项

表 10  库选项
选项
操作
-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.4.8 已过时选项


注 -  以下选项当前已过时(因此编译器不再接受它们)或者在以后的发行版中可能会被删除。
表 11  已过时选项
选项
操作
-features=[%all|%none]
过时的子选项 %all%none
-library=%all
过时的子选项,在以后的发行版本中可能会被删除。
-migration
不再识别该选项。
-xanalyze
已过时,请改用 -previse
-xarch=v7,v8,v8a
已过时。
-xlic_lib=sunperf
使用 —library=sunperf 可链接到 Sun 性能库。
-xlicinfo
已废弃。
-xnativeconnect
已废弃,没有替代选项。
-xprefetch=yes
改用 -xprefetch=auto,explicit
-xprefetch=no
改用 -xprefetch=no%auto,no%explicit
–xvector=yes
改用 –xvector=lib
–xvector=no
改用 –xvector=none

3.4.9 输出选项

表 12  输出选项
选项
操作
-c
仅编译;生成对象 (.o) 文件,但抑制链接。
-dryrun
显示由驱动程序发出的所有命令行,但不运行任何命令行。
-E
仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。
-erroff
禁止编译器警告消息。
-errtags
显示每条警告消息的消息标记。
-errwarn
如果发出指示的警告消息,编译器将以失败状态退出。
-filt
禁止编译器应用到链接程序错误消息的过滤。
–G
生成动态共享库来取代可执行文件。
–H
打印被包含文件的路径名称。
–o filename
将输出文件或可执行文件的名称设置为 filename
–P
仅预处理源文件,输出到 .i 文件。
–Qproduce sourcetype
使 CC 驱动程序生成类型为 sourcetype 的输出。
–s
从可执行文件去掉符号表。
–verbose=vlst
控制编译器详细级别。
+w
必要时打印附加警告。
+w2
适当时仍打印更多警告。
–w
抑制警告消息。
-xdumpmacros
打印诸如定义、定义及未定义的位置和已使用的位置的宏信息。
-xe
仅对源文件执行语法和语义检查,但不生成任何对象或可执行代码。
–xhelp=flags
显示编译器选项汇总列表。
–xM
输出 makefile 依赖性信息。
–xM1
生成依赖性信息,但排除 /usr/include
–xtime
报告每个编译阶段的执行时间。
–xwe
将所有的警告转换为错误。
-z arg
链接程序选项。

3.4.10 运行时性能选项

表 13  运行时性能选项
选项
操作
–fast
选择编译选项的组合以优化某些程序的执行速度。
-fma
启用自动生成浮点混合乘加指令。
-g
指示编译器和链接程序准备程序以进行性能分析(以及调试)。
-s
从可执行文件去掉符号表。
-m32|-m64
指定编译的二进制对象的数据类型模型。
-xalias_level
启用编译器执行基于类型的别名分析和优化。
-xarch=isa
指定目标体系结构指令集。
-xbinopt
准备二进制文件以便以后进行优化、转换和分析。
-xbuiltin[=opt]
启用或禁用标准库调用的更多优化。
-xcache=c
(SPARC) 定义优化器的目标高速缓存属性。
-xchip=c
指定目标处理器芯片。
-xdebuginfo
指示编译器和链接程序准备程序以进行性能分析(以及调试)。
-xF
启用函数和变量的链接程序重新排序。
-xinline=flst
指定用户编写的哪些例程可以被优化器内联。
-xinline_param
手动更改编译器用来确定何时内联函数调用的试探式方法。
-xinline_report
生成在编译器内联函数时写入标准输出的报告。
-xipo
执行过程间优化。
-xipo_build
通过避免在初始传递期间通过编译器进行优化(仅在链接时优化)而缩短编译时间。
-xlibmil
内联选定的 libm 库例程以进行优化。
-xlibmopt
使用优化数学例程的库。
-xlinkopt
除了对象文件中的所有优化之外,对生成的可执行文件或动态库执行链接时优化。
-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) 不允许有基于内存的陷阱。
-xsegment_align
使驱动程序在链接行上包括特殊映射文件。
-xspace
(SPARC) 不允许会增大代码大小的优化。
-xtarget=t
指定目标指令集和优化系统。
-xthreadvar
更改缺省的线程局部存储访问模式。
-xthroughput
指定当多个进程同时在系统上运行时运行应用程序。
-xunboundsym
指定程序是否包含对动态绑定符号的引用。
-xunroll=n
启用在可能的场合下解开循环。
-xvis
(SPARC) 使编译器可以识别 VIS 指令集中定义的汇编语言模板。

3.4.11 预处理程序选项

表 14  预处理程序选项
选项
操作
-Dname[=def]
为预处理程序定义符号 name
-E
仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。包括有关预处理行的源文件的信息。不编译。
-H
打印被包含文件的路径名称。
-P
仅预处理源文件,输出到 .i 文件。
-Uname
删除预处理程序符号 name 的初始定义。
-xM
输出 makefile 依赖性信息。
-xM1
生成依赖性信息,但排除 /usr/include

3.4.12 分析选项

表 15  分析选项
选项
操作
-p
准备对象代码来收集数据以使用 prof 进行分析。
-xpg
编译以便使用 gprof 分析器进行分析。
-xprofile
收集运行时分析数据或使用运行时分析数据进行优化。

3.4.13 引用选项

表 16  引用选项
选项
操作
-xhelp=flags
显示编译器选项汇总列表。

3.4.14 来源选项

表 17  来源选项
选项
操作
-H
打印被包含文件的路径名称。
-Ipathname
pathname 添加到 include 文件搜索路径。
-I-
更改包含文件搜索规则
-xM
输出 makefile 依赖性信息。
-xM1
生成依赖性信息,但排除 /usr/include

3.4.15 模板选项

表 18  模板选项
选项
操作
-instances=a
控制模板实例的放置和链接。
-template=wlst
启用或禁用各种模板选项。

3.4.16 线程选项

表 19  线程选项
选项
操作
-mt
编译和链接多线程代码。
-xsafe=mem
(SPARC) 不允许有基于内存的陷阱。
-xthreadvar
(SPARC) 更改缺省的线程局部存储访问模式。