3.3 选项摘要
在本节中,为了便于参考,将按功能对编译器选项进行分组。有关详细信息,请参见以下几节中相应页面上的内容。
请注意,并非所有选项在 SPARC 和 x64/x86 平台上都可用。有关可用性的说明,请查看详细的参考部分。
下表按功能汇总了 f95 编译器选项。该表不包括已过时的和传统的选项标志。某些标志用于多个目的,因此出现多次。
表 5 按功能分组的编译器选项
|
|
编译模式:
|
|
仅编译;不生成可执行文件
|
-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
|
与 Oracle Developer Studio 性能库进行链接
|
-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
|
接受扩展(250 个字符)源行
|
-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
|
|
3.3.1 常用选项
编译器有许多可通过可选命令行参数选择的功能。下面的简要列表列出了一些常用选项,让您一睹为快。
表 6 常用选项
|
|
调试-在例程之间进行全局程序检查以确保参数、通用块等的一致性。
|
–Xlist
|
调试-生成其他用于启用 dbx 和调试的符号表信息。
|
–g
|
性能-调用优化器以生成运行速度更快的程序。
|
–O[n]
|
性能-使用一组预先确定的选项,为本机平台生成高效的编译时和运行时。
|
–fast
|
动态 (–Bdynamic) 或静态 (–Bstatic) 库绑定。
|
–Bx
|
仅编译-禁止链接;为每个源文件生成一个 .o 文件。
|
–c
|
输出文件-将可执行输出文件命名为 nm 而不是 a.out。
|
–o nm
|
源代码-编译固定格式的 Fortran 源代码。
|
-fixed
|
|
3.3.2 宏标志
某些选项标志是可扩展为由其他标志组成的特定集合的宏。之所以提供这些选项标志,是为了便于指定通常一起用来选择某项功能的多个选项。
表 7 宏选项标志
|
|
-dalign
|
-xmemalign=8s -aligncommon=16
|
-f
|
-aligncommon=16
|
-fast
|
有关完整的当前扩展,请参见 —fast 说明。
|
-fnonstd
|
-fns -ftrap=common
|
-xia=widestneed
|
-xinterval=widestneed -ftrap=%none -fns=no -fsimple=0
|
-xia=strict
|
-xinterval=strict -ftrap=%none -fns=no -fsimple=0
|
-xtarget
|
-xarch=a -xcache=b -xchip=c
|
|
命令行上跟在宏标志后面的设置将覆盖或增加宏扩展。
3.3.3 向后兼容性和传统选项
提供以下选项的目的是为了与早期发行版的编译器和某些 Fortran 传统功能实现向后兼容。
表 8 向后兼容性选项
|
|
通过 ENTRY 语句保留实际参数
|
-arg=local
|
允许为常量参数赋值。
|
–copyargs
|
在调用参数列表中将霍尔瑞斯常数视为字符或无类型。
|
-xhasc[={yes|no}]
|
支持 Fortran 77 扩展和约定
|
-f77
|
非标准运算—允许非标准运算。
|
–fnonstd
|
为主机系统优化性能。
|
–native
|
DO 循环—使用单程 DO 循环。
|
–onetrip
|
允许存在传统的别名情况
|
-xalias=keywords
|
|
建议在生成可移植的 Fortran 程序时不要使用这些选项标志。
3.3.4 已过时的选项标志
下面的选项被认为是已过时的,不应使用它们。在编译器的以后发行版本中可能会删除这些选项。
表 9 过时的 f95 选项
|
|
|
-xprofile=tcov
|
|
-xtarget=native
|
|
许可证排队。不再需要。
|
-p
|
分析。使用 -pg 或性能分析器
|
|
-xcode=pic13
|
|
-xcode=pic32
|
-silent
|
已忽略。
|
-xarch={v7,v8,v8a}
|
使用 —m32
|
|