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 编译器介绍

2.  特定于 C 编译器实现的信息

3.  并行化 C 代码

4.  lint 源代码检验器

5.  基于类型的别名分析

6.  转换为 ISO C

7.  转换应用程序以适用于 64 位环境

8.  cscope:交互检查 C 程序

A.  按功能分组的编译器选项

A.1 按功能汇总的选项

A.1.1 优化和性能选项

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

A.1.3 数据对齐选项

A.1.4 数值和浮点选项

A.1.5 并行化选项

A.1.6 源代码选项

A.1.7 编译的代码选项

A.1.8 编译模式选项

A.1.9 诊断选项

A.1.10 调试选项

A.1.11 链接选项和库选项

A.1.12 目标平台选项

A.1.13 x86 特定选项

A.1.14 已过时选项

B.  C 编译器选项参考

C.  实现定义的 ISO/IEC C99 行为

D.  C99 的功能

E.  实现定义的 ISO/IEC C90 行为

F.  ISO C 数据表示法

G.  性能调节

H.  Oracle Solaris Studio C:K&R C 与 ISO C 之间的差异

索引

A.1 按功能汇总的选项

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

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

A.1.1 优化和性能选项

表 A-1 优化和性能选项

选项
操作
-fast
选择用于控制可执行代码速度的编译选项的最优组合。
-fma
(SPARC) 启用自动生成浮点乘加指令。
-library=sunperf
与 Sun 性能库链接
-p
准备目标代码以收集要进行分析的数据
-xalias_level
启用编译器执行基于类型的别名分析和优化。
-xannotate
(Solaris) 指示编译器创建可通过优化和监测工具 binopt(1)、code-analyzer(1)、discover(1)、collect(1) 和 uncover(1) 使用的二进制文件
-xbinopt
准备二进制文件以便以后进行优化、转换和分析。
-xbuiltin
改善用于调用标准库函数的代码的优化。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xF
启用通过链接程序对数据和函数进行重新排序。
-xhwcprof
(SPARC) 为基于硬件计数器的分析启用编译器支持。
-xinline
尝试仅内联指定的那些函数。
-xinstrument
编译并检测程序,以供线程分析器进行分析。
-xipo
通过调用过程间分析组件来执行整个程序优化。
-xipo_archive
允许跨文件优化以包括归档 (.a) 库。
-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
不优化或并行化会增加代码大小的循环。
-xunroll
建议编译器解开循环 n 次。

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

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

表 A-2 编译时选项和链接时选项

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

A.1.3 数据对齐选项

表 A-3 数据对齐选项

选项
操作
-xchar_byte_order
通过按指定的字节顺序放置多字符字符常量的字符来生成整型常量。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xmemalign
(SPARC) 指定假定的最大内存对齐以及未对齐的数据访问的行为。
-xopenmp
支持用于显式并行化的 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。

A.1.4 数值和浮点选项

表 A-4 数值和浮点选项

选项
操作
-flteval
(x86) 控制浮点求值。
-fma
(SPARC) 启用自动生成浮点乘加指令。
-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 并行化选项

表 A-5 并行化选项

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

A.1.6 源代码选项

表 A-6 源代码选项

选项
操作
-A
name 作为谓词与指定的 tokens 关联,就好像通过 #assert 预处理指令进行关联一样。
-C
禁止预处理程序删除注释,除非这些注释位于预处理指令行上。
-D
name 与指定的 tokens 关联,就好像通过 #define 预处理指令进行关联一样。
-E
仅通过预处理程序运行源文件并将输出发送到 stdout
-fd
报告 K&R 样式的函数定义和声明。
-H
输出为标准错误,一行一个,当前编译过程中包括每个文件的路径名。
-I
将目录添加到要搜索具有相对文件名的 #include 文件的列表中。
-include
使编译器处理参数 filename 的方式就相当于其是位于主源文件首行的 #include 预处理程序指令。
-P
仅通过 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 编译的代码选项

表 A-7 编译的代码选项

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

A.1.8 编译模式选项

表 A-8 编译模式选项

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

A.1.9 诊断选项

表 A-9 诊断选项

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

A.1.10 调试选项

表 A-10 调试选项

选项
操作
-xcheck
添加针对堆栈溢出的运行时检查并初始化局部变量。
-g
生成有关调试器的其他符号表信息。
-g3
生成其他调试信息。
-s
从输出目标文件中删除所有符号调试信息。
-xdebugformat
生成 dwarf 格式而不是 stabs 格式的调试信息。
-xpagesize
设置堆栈和堆的首选页面大小。
-xpagesize_stack
设置堆栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xs
禁止自动读取 dbx 的目标文件。
-xvis
(SPARC) 使编译器可以识别 VIS 指令集中定义的汇编语言模板。

A.1.11 链接选项和库选项

表 A-11 链接选项和库选项表

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

将文本字符串插入到文本段的只读部分而不是缺省数据段。

A.1.12 目标平台选项

表 A-12 目标平台选项

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

A.1.13 x86 特定选项

表 A-13 x86 特定选项

选项
操作
-flteval
控制浮点求值。
-fprecision
初始化浮点控制字中的舍入精度模式位
-fstore
使编译器将浮点表达式或函数的值转换为赋值左侧的类型
-nofstore
不将浮点表达式或函数的值转换为赋值左侧的类型
-xmodel
针对 Oracle Solaris x86 平台修改 64 位对象形式

A.1.14 已过时选项

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

表 A-14 废弃选项表

选项
操作
-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
-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