JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.2:C++ 用户指南
search filter icon
search icon

文档信息

前言

第 1 部分C++ 编译器

1.  C++ 编译器

2.  使用 C++ 编译器

3.  使用 C++ 编译器选项

3.1 语法概述

3.2 通用指南

3.3 按功能汇总的选项

3.3.1 代码生成选项

3.3.2 编译时性能选项

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

3.3.4 调试选项

3.3.5 浮点选项

3.3.6 语言选项

3.3.7 库选项

3.3.8 废弃的选项

3.3.9 输出选项

3.3.10 运行时性能选项

3.3.11 预处理程序选项

3.3.12 文件配置选项

3.3.13 参考选项

3.3.14 源文件选项

3.3.15 模板选项

3.3.16 线程选项

第 2 部分编写 C++ 程序

4.  语言扩展

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream

14.  使用复数运算库

15.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

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) 更改缺省的线程局部存储访问模式。