Oracle Solaris Studio 12.2:C 用户指南

A.1 按功能汇总的选项

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

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

A.1.1 优化和性能选项

表 A–1 优化和性能选项表

选项  

操作  

-fast

选择编译选项的最佳组合,以加快可执行代码的编译速度。

-fma

(SPARC) 启用自动生成浮点乘加指令。 

-p

准备目标代码,以便收集数据进行文件配置

-xalias_level

使编译器可执行基于类型的别名分析和优化。

-xannotate

(Solaris) 指示编译器创建以后可由诸如 binopt(1) 之类的二进制修改工具进行转换。

-xbinopt

准备二进制文件,以便随后进行优化、转换和分析。

-xbuiltin

改进对调用标准库函数的代码的优化。

-xdepend

分析循环以了解迭代间数据依赖性并执行循环重构。

-xF

允许链接程序对数据和函数重新排序。

-xhwcprof

(SPARC) 允许编译器支持基于硬件计数器的分析。

-xinline

尝试仅内联指定函数。

-xinstrument

编译程序并为其提供程序设备以便 Thread Analyzer 对其进行分析。 

-xipo

通过调用过程间分析组件对整个程序执行优化。

-xipo_archive

使交叉文件优化可包含归档 (.a) 库。

-xjobs

设置编译器创建的进程数。

-xlibmil

内联一些库例程,以加快执行的速度。

-xlic_lib=sunperf

Sun 性能库中进行链接。

-xlinkopt

对可重定位对象文件执行链接时优化。

-xlibmopt

启用已优化数学例程的库。

-xmaxopt

命令会将 pragma opt 级别限制为指定级别。

-xnolibmil

内联数学库例程。

-xnolibmopt

禁用已优化数学例程的库。

-x0

优化对象代码。

-xnorunpath

禁止在可执行文件中包含共享库的运行时搜索路径。 

-xpagesize

设置栈和堆的首选页面大小。

-xpagesize_stack

设置栈的首选页面大小。

-xpagesize_heap

设置堆的首选页面大小。

-xpch

缩短其源文件共享同一组 include 文件的应用程序的编译时间。

-xpec

生成一个可与自动调优系统 (Automatic Tuning System, ATS) 一起使用的可移植的可执行代码 (Portable Executable Code, PEC) 二进制文件。有关更多信息,请访问 http://cooltools.sunsource.net。

-xpchstop

可与 -xpch 结合使用以指定活前缀的最后一个 include 文件。

-xpentium

(x86) 针对 Pentium 处理器进行优化。

-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 作为谓词与指定的 token 相关联,这与使用 #assert 预处理指令类似。

-C

阻止预处理程序删除注释(预处理指令行中的注释除外)。

-D

name 与指定的标记相关联,这与使用 #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

帮助从字符被定义为无符号类型的系统中迁移。

-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

启用对十六位字符构成的串文字的识别。

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 与 Solaris Studio C 之间存在差异的警告。

-xvpara

已指定 #pragma MP 指令但可能未针对并行化进行正确指定的循环发出警告。

A.1.10 调试选项

表 A–10 调试选项表

选项  

操作  

-xcheck

添加针对栈溢出的运行时检查并初始化局部变量。

-g

调试器生成附加符号表信息。

-s

删除输出对象文件中的所有符号调试信息。

-xdebugformat

生成 dwarf 格式而非 stabs 格式的调试信息。

-xpagesize

设置栈和堆的首选页面大小。

-xpagesize_stack

设置栈的首选页面大小。

-xpagesize_heap

设置堆的首选页面大小。

-xs

禁用 dbx 的对象文件自动读取。

-xvis

(SPARC) 启用编译器对 VIS[tm] 指令集中定义的汇编语言模板的识别。

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

针对 Solaris x86 平台修改 64 位对象的形式

-xpentium

针对 Pentium 处理器进行优化。

A.1.14 许可证选项

表 A–14 许可证选项表

选项  

操作  

-xlicinfo

返回有关许可证系统的信息。

A.1.15 废弃的选项

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

表 A–15 废弃选项表

选项  

操作  

-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

-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