Oracle® Developer Studio 12.5:C 用户指南

退出打印视图

更新时间: 2016 年 7 月
 
 

按功能分组的编译器选项

本章总结了按功能分组的 C 编译器选项。表 36提供了这些选项以及编译器命令行语法的详细说明。

A.1 按功能汇总的选项

在本节中,编译器选项按功能分组以便提供快速参考。有关各个选项的详细说明,请参阅C 编译器选项参考。某些标志用于多个目的,因此出现多次。

这些选项适用于除了特别注明之外的所有平台。基于 SPARC 的系统所特有的功能标识为 (SPARC),基于 x86/x64 的系统所特有的功能标识为 (x86)。仅适用于 Oracle Solaris 平台的选项标有 (Oracle Solaris)。适用于 Oracle Linux 平台的选项标有 (Oracle Linux)。

A.1.1 优化和性能选项

表 23  优化和性能选项
选项
操作
-fast
选择用于控制可执行代码速度的编译选项的最优组合。
-fma
启用自动生成浮点混合乘加指令。
-library=sunperf
与 Sun 性能库链接。
-p
准备目标代码以收集要进行分析的数据。
-xalias_level
启用编译器执行基于类型的别名分析和优化。
-xannotate
指示编译器创建可供优化和监测工具 binopt(1)、code-analyzer(1)、discover(1)、collect(1) 和 uncover(1) 使用的二进制文件。
-xbinopt
准备二进制文件以便以后进行优化、转换和分析。
-xbuiltin
改善用于调用标准库函数的代码的优化。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xF
启用通过链接程序对数据和函数进行重新排序。
-xglobalize
控制文件静态变量的全局化,但是不控制函数的全局化。
-xhwcprof
为基于硬件计数器的分析启用编译器支持。
-xinline
尝试仅内联指定的那些函数。
-xinline_param
手动更改编译器用来确定何时内联函数调用的试探式方法。
-xinline_report
生成在编译器内联函数时写入标准输出的报告。
-xinstrument
编译并检测程序,以供线程分析器进行分析。
-xipo
通过调用过程间分析组件来执行整个程序优化。
-xipo_archive
允许跨文件优化包括归档 (.a) 库。
-xipo_build
避免初始传递期间通过编译器优化而仅在链接时优化,从而缩短编译时间。
-xkeepframe
禁止对命名函数进行与堆栈相关的优化。
-xjobs
设置编译器将创建的进程数。
-xlibmil
内联某些库例程以便更快执行。
-xlic_lib=sunperf
已过时。使用 -library=sunperf 可链接到 Sun 性能库。
-xlinkopt
对可重定位对象文件执行链接时优化。
-xlibmopt
启用优化数学例程的库。
-xmaxopt
pragma opt 的级别限制为指定的级别。
-xnolibmil
不内联数学库例程。
-xnolibmopt
不启用优化数学例程的库。
-xO
优化对象代码。
-xnorunpath
禁止在可执行文件中包含共享库的运行时搜索路径。
-xpagesize
设置堆栈和堆的首选页面大小。
-xpagesize_stack
设置堆栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xpch
减少应用程序的编译时间,该应用程序的源文件共享一组共同的 include 文件。
–xpec
生成可移植的可执行代码 (Portable Executable Code, PEC) 二进制文件,该文件可用于其他调优和故障排除。
-xpchstop
可以与 -xpch 一起使用来指定活前缀的最后一个 include 文件。
-xprefetch
启用预取指令。
-xprefetch_level
控制 -xprefetch=auto 设置的自动插入预取指令的主动性
-xprefetch_auto_type
控制生成间接预取的方式。
-xprofile
收集用于分析的数据或使用分析进行优化。
-xprofile_ircache
通过重用在 -xprofile=collect 阶段中保存的编译数据来缩短 -xprofile=use 阶段的编译时间。
-xprofile_pathmap
支持单个分析目录中有多个程序或共享库。
-xrestrict
将返回赋值指针的函数参数视为限定指针。
-xsafe
(SPARC) 允许编译器假定不发生基于内存的陷阱。
-xspace
不优化或并行化会增加代码大小的循环。
-xthroughput
指示编译器当多个进程同时在系统上运行时应用程序将会运行。
-xunroll
建议编译器解开循环 n 次。

A.1.2 编译时选项和链接时选项

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

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

A.1.3 数据对齐选项

表 25  数据对齐选项
选项
操作
-xchar_byte_order
通过按指定的字节顺序放置多字符字符常量的字符来生成整型常量。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xmemalign
(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。
-xsegment_align
使驱动程序在链接行上包括特殊映射文件。

A.1.4 数值和浮点选项

表 26  数值和浮点选项
选项
操作
-flteval
(x86) 控制浮点求值。
-fma
启用自动生成浮点混合乘加指令。
-fnonstd
使对浮点运算硬件进行非标准初始化。
-fns
打开非标准浮点模式。
-fprecision
(x86) 初始化浮点控制字中的舍入精度模式位
-fround
设置在程序初始化过程中在运行时建立的 IEEE 754 舍入模式。
-fsimple
允许优化器简化关于浮点运算的假定。
-fsingle
使编译器将 float 表达式以单精度而不双精度形式进行求值。
-fstore
(x86) 使编译器将浮点表达式或函数的值转换为赋值左侧的类型
-ftrap
设置启动时生效的 IEEE 754 陷阱模式。
-nofstore
(x86) 不将浮点表达式或函数的值转换为赋值左侧的类型
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xlibmieee
在异常情况下对于数学例程强制返回 IEEE 754 样式的值。
-xsfpconst
以单精度形式表示无后缀的浮点常量
-xvector
启用对向量库函数调用的自动生成。

A.1.5 并行化选项

表 27  并行化选项
选项
操作
-fopenmp
-xopenmp=parallel 等效。
-mt
扩展为 -D_REENTRANT -lthread 的宏选项。
-xautopar
为多个处理器启用自动并行化。
-xcheck
添加针对堆栈溢出的运行时检查并初始化局部变量。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xloopinfo
显示哪些循环进行了并行化处理,哪些循环没有进行并行化处理。
-xopenmp
支持用于显式并行化的 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。
-xreduction
在自动并行化期间启用约简识别。
-xrestrict
将返回赋值指针的函数参数视为限定指针。
-xthreadvar
控制线程局部变量的实现。
-xthroughput
指定当多个进程同时在系统上运行时运行应用程序。
-xvpara
对于已指定了 #pragma MP 指令,但可能未针对并行化正确指定指令的循环发出警告。

A.1.6 源代码选项

表 28  源代码选项
选项
操作
-A
name 作为谓词与指定的令牌相关联,就像使用 #assert 预处理指令一样。
-ansi
-std=c89 等效。
-C
禁止预处理程序删除注释,除非这些注释位于预处理指令行上。
-D
name 与指定的令牌相关联,就像使用 #define 预处理指令一样。
-E
仅通过预处理程序运行源文件并将输出发送到 stdout
-fd
报告 K&R 样式的函数定义和声明。
-H
打印到标准错误,一行一个,当前编译过程中包括每个文件的路径名。
-I
将目录添加到要搜索具有相对文件名的 #include 文件的列表中。
–include
使编译器处理参数 filename 的方式就相当于其是位于主源文件首行的 #include 预处理程序指令。
-P
仅通过 C 预处理程序运行源文件。
-pedantic
强制要求严格遵循非 ANSI 构造的错误/警告。
-preserve_argvalues
(x86) 在堆栈中保存基于寄存器的函数参数的副本。
-std
指定 C 语言标准。
-U
删除预处理程序符号 name 的任何初始定义。
-X
-X 选项指定符合 ISO C 标准的各种级别。
-xCC
接受 C++ 样式的注释。
-xc99
控制编译器识别支持的 C99 功能。
-xchar
帮助在 char 定义为无符号的系统上进行迁移。
-xcsi
允许 C 编译器接受在不符合 ISO C 源字符代码要求的语言环境中编写的源代码
-xM
仅对命名的 C 程序运行预处理程序,并请求生成 makefile 依赖性并将结果发送到标准输出
-xM1
收集 -xM 等依赖性信息,但排除 /usr/include 文件。
-xMD
-xM 一样生成 makefile 依赖性,但包括编译。
-xMF
指定可存储 makefile 依赖性信息的文件名。
-xMMD
生成 makefile 依赖性,但排除系统头。
-xP
打印此模块中定义的所有 K&R C 函数的原型
-xpg
准备对象代码来收集数据以使用 gprof(1) 进行分析。
-xtrigraphs
确定三字符序列的识别。
-xustr
启用识别由 16 位字符构成的文本字符串。

A.1.7 编译的代码选项

表 29  编译的代码选项
选项
操作
-c
指示编译器禁止与 ld(1) 链接,并在当前工作目录中为每个源文件生成一个 .o 文件
-o
为输出文件命名
-S
指示编译器生成汇编源文件,但不汇编程序。

A.1.8 编译模式选项

表 30  编译模式选项
选项
操作
-#
启用详细模式,在该模式下将显示扩展命令选项的方式并像要调用一样显示每个组件。
-###
好像要进行调用一样显示每个组件,但不实际执行该组件。还显示命令选项扩展的过程。
-ansi
-std=c89 等效。
-features
启用或禁用各种 C 语言特性。
-keeptmp
保留编译过程中创建的临时文件而不自动删除这些文件。
-std
指定 C 语言标准。
-temp
为临时文件定义目录。
-V
指示 cc 打印每个组件的名称和版本 ID,就像编译器执行一样。
-W
将参数传递给 C 编译系统组件。
-X
-X 选项指定符合 ISO C 标准的各种级别。
-xc99
控制编译器识别支持的 C99 功能。
-xchar
保留字符符号
-xhelp
显示联机帮助信息。
-xjobs
设置编译器将创建的进程数。
-xlang
覆盖 -std 标志指定的缺省 libc 行为。
-xpch
减少应用程序的编译时间,该应用程序的源文件共享一组共同的 include 文件。
-xpchstop
可以与 -xpch 一起使用来指定活前缀的最后一个 include 文件。
-xtime
报告每个编译组件使用的时间和资源。
-Y
为 C 编译系统组件的位置指定新目录。
-YA
更改搜索组件的缺省目录。
-YI
更改搜索 include 文件的缺省目录。
-YP
更改查找库文件的缺省目录。
-YS
更改启动对象文件的缺省目录。

A.1.9 诊断选项

表 31  诊断选项
选项
操作
-errfmt
在错误消息前面加上字符串“error:”,以便与警告消息区别开来。
-errhdr
将来自头文件的警告限定到指定的组。
-erroff
禁止编译器警告消息。
-errshort
控制当编译器发现类型不匹配时生成的错误消息的详细程度。
-errtags
显示每条警告消息的消息标记。
-errwarn
如果发出指示的警告消息,cc 将以失败状态退出。
-pedantic
强制要求严格遵循非 ANSI 构造的错误/警告。
-v
指示编译器执行更严格的语义检查并启用其他类似 lint 的检查。
-w
禁止编译器警告消息。
-xanalyze
生成能使用代码分析器查看的源代码静态分析。
-xe
对源文件仅执行语法和语义检查,但不生成任何对象或可执行代码。
-xprevise
生成能使用代码分析器查看的源代码静态分析。
-xs
(Oracle Solaris) 将调试信息从对象文件链接到可执行文件。
-xtransition
对 K&R C 与 Oracle Developer Studio ISO C 之间的差别发出警告。
-xvpara
对于已指定了 #pragma MP 指令,但可能未针对并行化正确指定指令的循环发出警告。

A.1.10 调试选项

表 32  调试选项
选项
操作
-g
生成有关调试器的其他符号表信息。
-g3
生成其他调试信息。
-s
从输出对象文件中删除所有符号调试信息。
-xcheck
添加针对堆栈溢出的运行时检查并初始化局部变量。
-xdebugformat
生成 dwarf 格式而不是 stabs 格式的调试信息。
-xdebuginfo
控制发出多少调试和监测信息。
-xglobalize
控制文件静态变量的全局化,但是不控制函数的全局化。
-xkeep_unref
保留未引用函数和变量的定义。
-xpagesize
设置堆栈和堆的首选页面大小。
-xpagesize_stack
设置堆栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xs
禁止自动读取 dbx 的对象文件。
-xvis
(SPARC) 使编译器可以识别 VIS 指令集中定义的汇编语言模板。

A.1.11 链接选项和库选项

表 33  链接选项和库选项表
选项
操作
-B
指定链接的库绑定是为 static 还是 dynamic
-d
在链接编辑器中指定动态链接或静态链接。
-G
将选项传递给链接编辑器来生成共享对象而不是动态链接的可执行文件。
-h
按某种方式将名称赋给共享动态库以产生不同版本的库。
-i
将选项传递给链接程序以忽略任何 LD_LIBRARY_PATH 设置。
-L
将目录添加到链接程序搜索库的列表中。
-l
与对象库 libname .solibname.a 链接。
-mc
从对象文件的 .comment 部分中删除重复字符串。
-mr
删除 .comment 部分中的所有字符串。也可以向对象文件的该部分中插入一个字符串
-Q
确定是否将标识信息发送到输出文件。
-R
将用于指定库搜索目录的以逗号分隔的目录列表发送给运行时链接程序。
-staticlib
指定与 Sun 性能库的链接是静态的还是动态的。
-xMerge
将数据段合并到文本段。
-xcode
指定代码地址空间。
-xlang
覆盖 -std 标志指定的缺省 libc 行为。
-xldscope
控制变量和函数定义的缺省作用域,以创建更快更安全的共享库。
-xnolib
缺省情况下不链接任何库
-xnolibmil
不内联数学库例程。
-xpatchpadding
在各个函数启动之前保留内存区域。
-xsegment_align
使驱动程序在链接行上包括特殊映射文件。
-xstrconst
在以后的发行版中可能会废弃此选项。改用 –features=[no%]conststrings
将文本字符串插入到文本段的只读部分而不是缺省数据段。
-xunboundsym
指定程序是否包含对动态绑定符号的引用。

A.1.12 目标平台选项

表 34  目标平台选项
选项
操作
-m32 |-m64
指定编译的二进制对象的数据类型模型。
-xarch
指定指令集体系结构。
-xcache
定义供优化器使用的高速缓存属性。
-xchip
指定供优化器使用的目标处理器。
-xregs
为生成的代码指定寄存器用法。
-xtarget
为指令集和优化指定目标系统。

A.1.13 x86 特定选项

表 35  x86 特定选项
选项
操作
-flteval
控制浮点求值。
-fprecision
初始化浮点控制字中的舍入精度模式位
-fstore
使编译器将浮点表达式或函数的值转换为赋值左侧的类型
-nofstore
不将浮点表达式或函数的值转换为赋值左侧的类型
-preserve_argvalues
(x86) 在堆栈中保存基于寄存器的函数参数的副本。
-xmodel
针对 Oracle Solaris x86 平台修改 64 位对象形式

A.1.14 已过时选项

下表列出了已过时的选项。请注意,编译器仍可接受这些选项,但在以后的版本中可能不接受这些选项。所以,请尽快开始使用建议的替代选项。

表 36  已过时选项表
选项
操作
-dalign
改用 -xmemalign=8s
-KPIC (SPARC)
改用 -xcode=pic32
-Kpic (SPARC)
改用 -xcode=pic13
-misalign
改用 -xmemalign=1i
-misalign2
改用 -xmemalign=2i
-x386
改用 -xchip=generic
-x486
改用 -xchip=generic
-xa
改用 -xprofile=tcov
-xanalyze
生成能使用代码分析器查看的源代码静态分析。
-xarch=v7,v8,v8a
已过时。
-xcg
改用 -O,以利用 -xarch-xchip-xcache 的缺省值。
–-xcrossfile
已过时。改用 –xipo
-xlicinfo
已过时;没有替代选项。
-xnativeconnect
已过时,没有替代选项。
-xprefetch=yes
改用 -xprefetch=auto,explicit
-xprefetch=no
改用 -xprefetch=no%auto,no%explicit
-xsb
已过时,没有替代选项。
–xsbfast
已过时,没有替代选项。
-xtarget=386
改用 -xtarget=generic
-xtarget=486
改用 -xtarget=generic
–xvector=yes
改用 –xvector=lib
–xvector=no
改用 –xvector=none