3.3 选项摘要
在本节中,为了便于参考,将按功能对编译器选项进行分组。有关详细信息,请参见以下几节中相应页面上的内容。
请注意,并非所有选项在 SPARC 和 x64/x86 平台上都可用。有关可用性的说明,请查看详细的参考部分。
下表按功能汇总了 f95 编译器选项。该表不包括已过时的和传统的选项标志。某些标志用于多个目的,因此出现多次。
表 3-3 按功能分组的编译器选项
|
|
编译模式:
|
|
仅编译;不生成可执行文件
|
-c
|
|
显示由驱动程序生成的命令,但不进行编译
|
-dryrun
|
|
支持 Fortran 77 扩展和兼容性
|
-f77
|
|
不要替换其内容不是由相关 Fortran 模块的编译进行更改的模块文件
|
-keepmod
|
|
保留在编译期间所创建的临时文件。
|
-keeptmp
|
|
指定要将已编译的 .mod 模块文件写入的路径
|
-moddir=path
|
|
指定要编写的对象文件、库文件或可执行文件的名称
|
-o filename
|
|
进行编译并只生成汇编代码
|
-S
|
|
将符号表与可执行文件分离
|
-s
|
|
禁止编译器消息(错误消息除外)
|
-silent
|
|
定义临时文件所在目录的路径
|
-temp=path
|
|
显示每个编译阶段占用的时间
|
-time
|
|
显示编译器的版本号及其阶段
|
-V
|
|
详细消息
|
-v
|
|
指定非标准别名情况
|
-xalias=list
|
|
使用多个处理器进行编译
|
-xjobs=n
|
|
生成 make 依赖项
|
-xM
|
|
(Oracle Solaris) 将调试信息从对象文件链接到可执行文件
|
-xs
|
已编译的代码:
|
|
对于外部名称,增加/删除尾随下划线
|
-ext_names=x
|
|
内联指定的用户函数
|
-inline=list
|
|
与编译位置无关的代码
|
-KPIC/-kpic
|
|
内联某些数学库例程
|
-libmil
|
|
(x86) 在堆栈中保存基于寄存器的函数参数的副本
|
-preserve_argvalues
|
|
STOP 将整数状态值返回给 shell
|
-stop_status[=yn]
|
|
指定代码地址空间
|
-xcode=x
|
|
与 -inline 等效。
|
-xinline
|
|
手动更改编译器用来确定何时内联函数调用的试探式方法
|
-xinline_param
|
|
生成在编译器内联函数时写入标准输出的报告
|
-xinline_report
|
|
启用预取指令
|
-xprefetch[=x]
|
|
指定可选寄存器的使用
|
-xregs=x
|
|
指定缺省数据映射
|
-xtypemap=x
|
数据对齐:
|
|
指定对齐 COMMON 块中的数据
|
-aligncommon[=n]
|
|
强制对齐 COMMON 块数据以允许双字获取/存储
|
-dalign
|
|
强制所有数据按 8 字节边界对齐
|
-dbl_align_all
|
|
按 8 字节边界对齐 COMMON 块数据
|
-f
|
|
支持 little-endian 和 big-endian 平台之间的文件共享。
|
-xfilebyteorder
|
|
指定内存对齐和行为
|
-xmemalign[=ab]
|
调试:
|
|
启用运行时下标范围检查
|
-C
|
|
为使用 dbx 调试而进行编译
|
-g
|
|
标志未声明变量的使用
|
-u
|
|
检查 !$PRAGMA ASSUME 断言
|
-xassume_control=check
|
|
检查在运行时堆栈是否溢出
|
-xcheck=stkovf
|
|
启用运行时任务普通检查
|
-xcommonchk
|
|
控制发出多少调试和监测信息
|
-xdebuginfo
|
|
为性能分析器进行编译
|
-xF
|
|
控制文件静态变量的全局化,但是不控制函数的全局化
|
-xglobalize
|
|
保留未引用函数和变量的定义
|
-xkeep_unref
|
|
生成交叉引用列表
|
-Xlistx
|
|
在没有对象文件的情况下启用调试
|
-xs
|
诊断:
|
|
标志非标准扩展名的使用
|
-ansi
|
|
禁止显示指定的警告消息
|
-erroff=
|
|
与错误消息一起显示错误标记名称
|
-errtags
|
|
显示编译器选项的摘要
|
-flags, -help
|
|
显示编译器的版本号及其阶段
|
-V
|
|
详细消息
|
-v
|
|
详细的并行化消息
|
-vpara
|
|
显示/禁止警告消息
|
-wn
|
|
(Oracle Solaris) 将调试信息从对象文件链接到可执行文件
|
-xs
|
链接和库:
|
|
允许/要求动态/静态库
|
-Bx
|
|
只允许动态/静态库链接
|
-dy, -dn
|
|
生成动态(共享对象)库
|
-G
|
|
为动态库指定名称
|
-hname
|
|
将目录增加到库搜索路径
|
-Lpath
|
|
与库 libname.a 或 libname.so 链接
|
-lname
|
|
不将库搜索路径生成到可执行文件中。
|
-norunpath
|
|
将运行时库搜索路径生成到可执行文件中
|
-Rpath
|
|
禁用递增链接程序 ild
|
-xildoff
|
|
与优化的数学库链接
|
-xlibmopt
|
|
与 Sun 性能库链接
|
-xlic_lib=sunperf
|
|
在各个函数启动之前保留内存区域
|
-xpatchpadding
|
|
指定程序是否包含对动态绑定符号的引用
|
-xunboundsym
|
|
链接编辑器选项
|
-zx
|
|
在不重定位的情况下生成纯库
|
-ztext
|
数字和浮点:
|
|
使用非标准浮点首选项
|
-fnonstd
|
|
选择非标准浮点
|
-fns
|
|
启用输入过程中的运行时浮点溢出
|
-fpover
|
|
选择 IEEE 浮点舍入模式
|
-fround=r
|
|
选择浮点优化级别
|
-fsimple=n
|
|
选择浮点捕获模式
|
-ftrap=t
|
|
指定用于格式化输入/输出的舍入方法
|
-iorounding=mode
|
|
将单精度常数提升为双精度常量
|
-r8const
|
|
启用区间运算并设置相应的浮点环境(包括 -xinterval)
|
-xia[=e]
|
|
启用区间运算扩展
|
-xinterval[=e]
|
优化与性能:
|
|
分析循环以了解数据依赖性
|
-depend
|
|
使用所选的选项进行优化
|
-fast
|
|
指定程序不能一次在多个线程中执行 I/O。
|
-fserialio
|
|
指定优化级别
|
-On
|
|
填充数据布局以便高效使用高速缓存
|
-pad[=p]
|
|
在内存堆栈上分配局部变量
|
-stackvar
|
|
启用循环解开
|
-unroll[=m]
|
|
调用过程间优化传递
|
-xipo[=n]
|
|
可避免通过编译器进行的初始传递期间的优化而仅在链接时优化,从而缩短编译时间
|
-xipo_build
|
|
为 #pragma OPT 设置最高优化级别
|
-xmaxopt[=n]
|
|
针对编译后优化进行编译
|
-xbinopt=prepare
|
|
启用/调整编译器生成的预取指令
|
-xprefetch=list
|
|
控制预取指令的自动生成
|
-xprefetch_level=n
|
|
启用性能分析数据的生成或使用
|
-xprofile=p
|
|
断言不会出现基于内存的陷阱
|
-xsafe=mem
|
|
使驱动程序在链接行上包括特殊映射文件。
|
-xsegment_align
|
|
不执行增加代码大小的优化
|
-xspace
|
|
指定当多个进程同时在系统上运行时应用程序将会运行
|
-xthroughput
|
|
自动生成对向量库函数的调用
|
-xvector[=yn]
|
并行化:
|
|
启用 DO 循环的自动并行化
|
-autopar
|
|
与 -xopenmp=parallel 等效。
|
-fopenmp
|
|
显示循环的并行化信息
|
-loopinfo
|
|
为手动编码的多线程编程进行编译
|
-mt
|
|
接受 OpenMP API 指令。-xopenmp 选项标志接受以下子选项关键字:parallel、noopt 和 none。
|
-xopenmp[=keyword]
|
|
识别具有自动并行化的循环中的约简操作
|
-reduction
|
|
详细的并行化消息
|
-vpara
|
|
指定当多个进程同时在系统上运行时应用程序将会运行
|
-xthroughput
|
源代码:
|
|
定义预处理程序符号
|
-Dname[=val]
|
|
取消定义预处理程序符号
|
-Uname
|
|
接受扩展(132 个字符)源行
|
-e
|
|
将预处理程序应用于 .F 和/或 .F90 及 .F95 文件,但不进行编译
|
-F
|
|
接受 Fortran 95 固定格式输入
|
-fixed
|
|
使用 fpp 预处理程序对所有源文件进行预处理
|
-fpp
|
|
接受 Fortran 95 自由格式输入
|
-free
|
|
将目录添加到 include 文件搜索路径
|
-Ipath
|
|
将目录添加到模块搜索路径
|
-Mpath
|
|
区分大小写
|
-U
|
|
在实际参数中将霍尔瑞斯常数视为字符
|
-xhasc={yes|no}
|
|
选择要使用的预处理程序(cpp 或 fpp)
|
-xpp[={fpp|cpp}]
|
|
允许递归子程序调用
|
-xrecursive
|
目标平台:
|
|
指定内存模型(32 位或 64 位)。
|
-m32 | —m64
|
|
为优化器指定目标平台指令集
|
-xarch=a
|
|
为优化器指定目标高速缓存属性
|
-xcache=a
|
|
为优化器指定目标处理器
|
-xchip=a
|
|
为优化器指定目标平台
|
-xtarget=a
|
|