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