JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:C++ 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
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 线程选项

3.4 用户提供的缺省选项文件

第 2 部分编写 C++ 程序

4.  语言扩展

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream

14.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

3.3 按功能汇总的选项

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

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

3.3.1 代码生成选项

表 3-2 代码生成选项

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

3.3.2 编译时性能选项

表 3-3 编译时性能选项

选项
操作
-instlib
禁止生成已出现在指定库中的模板实例。
-m32|-m64
指定编译的二进制对象的内存模型。
-xinstrument
编译并检测程序,以供线程分析器进行分析。
-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
通过调用过程间分析组件来执行整个程序优化。
-xlinker
指定链接程序选项。
-xlinkopt
对可重定位目标文件执行链接时优化。
-xmemalign
(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。
-xopenmp
支持用于显式并行化的 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。
-xpagesize
设置堆栈和堆的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xpagesize_stack
设置堆栈的首选页面大小。
-xpg
准备目标代码来收集数据以使用 gprof(1) 进行分析。
-xprofile
收集用于分析的数据或使用分析进行优化。
-xvector=lib
启用对向量库函数调用的自动生成。

3.3.4 调试选项

表 3-5 调试选项

选项
操作
-###
等效于 -dryrun
+d
不扩展 C++ 内联函数。
-dryrun
显示驱动程序将向编译的所有组件发出的所有命令。
-E
仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。
-g
编译以便用于调试器。
-g0
编译以便进行调试,但不禁用内联。
-H
打印包含文件的路径名称。
-keeptmp
保留编译时创建的临时文件。
-P
仅预处理源文件,输出到 .i 文件。
-Qoption
直接将选项传递到编译阶段。
-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 已过时选项

选项
操作
-features=[%all|%none]
过时的子选项 %all%none
-library=%all
过时的子选项,在以后的发行版本中可能会被删除。
-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.3.9 输出选项

表 3-10 输出选项

选项
操作
-c
仅编译;生成目标 (.o) 文件,但抑制链接。
-dryrun
显示但不编译由驱动程序传递到编译器的所有命令行。
-E
仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout。不编译。
-erroff
禁止编译器警告消息。
-errtags
显示每条警告消息的消息标记。
-errwarn
如果发出指示的警告消息,编译器将以失败状态退出。
-filt
禁止编译器应用到链接程序错误消息的过滤。
–G
生成动态共享库来取代可执行文件。
–H
输出被包含文件的路径名称。
–migration
解释可以从早期编译器获得有关移植信息的位置。
–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.3.10 运行时性能选项

表 3-11 运行时性能选项

选项
操作
–fast
选择编译选项的组合以优化某些程序的执行速度。
-fma
(SPARC) 启用自动生成浮点乘加指令。
-g
指示编译器和链接程序准备程序以进行性能分析(以及调试)。
-s
从可执行文件去掉符号表。
-m32|-m64
指定编译的二进制对象的内存模型。
-xalias_level
启用编译器执行基于类型的别名分析和优化。
-xarch=isa
指定目标体系结构指令集。
-xbinopt
准备二进制文件以便以后进行优化、转换和分析。
-xbuiltin[=opt]
启用或禁用标准库调用的更多优化。
-xcache=c
(SPARC) 定义优化器的目标高速缓存属性。
-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 参考选项

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

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