在本节中,为了便于参考,将按功能对编译器选项进行分组。有关详细信息,请参见以下几节中相应页面上的内容。
请注意,并非所有选项在 SPARC 和 x64/x86 平台上都可用。有关可用性的说明,请查看详细的参考部分。
下表按功能汇总了 f95 编译器选项。该表不包括已过时的和传统的选项标志。某些标志用于多个目的,因此出现多次。
表 3–3 按功能分组的编译器选项| 
 功能  | 
 选项标志  | 
|
|---|---|---|
| 
 编译模式:  | 
||
| 
 仅编译;不生成可执行文件  | 
 -c  | 
|
| 
 显示由驱动程序生成的命令,但不进行编译  | 
 -dryrun  | 
|
| 
 支持 Fortran 77 扩展和兼容性  | 
 -f77  | 
|
| 
 指定要将已编译的 .mod 模块文件写入的路径  | 
 -moddir=path  | 
|
| 
 指定要编写的目标文件、库文件或可执行文件的名称  | 
 -o filename  | 
|
| 
 进行编译并只生成汇编代码  | 
 -S  | 
|
| 
 将符号表与可执行文件分离  | 
 -s  | 
|
| 
 禁止编译器消息(错误消息除外)  | 
 -silent  | 
|
| 
 定义临时文件所在目录的路径  | 
 -temp=path  | 
|
| 
 显示每个编译阶段占用的时间  | 
 -time  | 
|
| 
 显示编译器的版本号及其阶段  | 
 -V  | 
|
| 
 冗余消息  | 
 -v  | 
|
| 
 指定非标准别名情况  | 
 -xalias=list  | 
|
| 
 使用多个处理器进行编译  | 
 -xjobs=n  | 
|
| 
 已编译的代码:  | 
||
| 
 对于外部名称,增加/删除尾随下划线  | 
 -ext_names=x  | 
|
| 
 内联指定的用户函数  | 
 -inline=list  | 
|
| 
 与编译位置无关的代码  | 
 -KPIC/-kpic  | 
|
| 
 内联某些数学库例程  | 
 -libmil  | 
|
| 
 STOP 将整数状态值返回给 shell  | 
 -stop_status[=yn]  | 
|
| 
 指定代码地址空间  | 
 -xcode=x  | 
|
| 
 启用预取指令。  | 
 -xprefetch[=x]  | 
|
| 
 指定可选寄存器的使用  | 
 -xregs=x  | 
|
| 
 指定缺省数据映射  | 
 -xtypemap=x  | 
|
| 
 数据对齐:  | 
||
| 
 指定对齐 COMMON 块中的数据  | 
 -aligncommon[=n]  | 
|
| 
 强制对齐 COMMON 块数据以允许双字获取/存储  | 
 -dalign  | 
|
| 
 强制所有数据按 8 字节边界对齐  | 
 -dbl_align_all  | 
|
| 
 按 8 字节边界对齐 COMMON 块数据  | 
 -f  | 
|
| 
 指定内存对齐和行为  | 
 -xmemalign[=ab]  | 
|
| 
 调试:  | 
||
| 
 启用运行时下标范围检查  | 
 -C  | 
|
| 
 为使用 dbx 调试而进行编译  | 
 -g  | 
|
| 
 为使用源浏览器浏览而进行编译  | 
 -sb、-sbfast  | 
|
| 
 标志未声明变量的使用  | 
 -u  | 
|
| 
 检查 C$PRAGMA ASSUME 断言  | 
 -xassume_control=check  | 
|
| 
 检查在运行时栈是否溢出  | 
 -xcheck=stkovf  | 
|
| 
 启用运行时任务普通检查  | 
 -xcommonchk  | 
|
| 
 为性能分析器进行编译  | 
 -xF  | 
|
| 
 生成交叉引用列表  | 
 -Xlistx  | 
|
| 
 在没有目标文件的情况下启用调试  | 
 -xs  | 
|
| 
 诊断:  | 
||
| 
 标志非标准扩展名的使用  | 
 -ansi  | 
|
| 
 禁止特定错误消息  | 
 -erroff=  | 
|
| 
 与错误消息一起显示错误标记名称  | 
 -errtags  | 
|
| 
 显示编译器选项的摘要  | 
 -flags、-help  | 
|
| 
 显示编译器的版本号及其阶段  | 
 -V  | 
|
| 
 冗余消息  | 
 -v  | 
|
| 
 冗余的并行化消息  | 
 -vpara  | 
|
| 
 显示/禁止警告消息  | 
 -wn  | 
|
| 
 显示编译器自述文件  | 
 -xhelp=readme  | 
|
| 
 许可:  | 
||
| 
 显示许可证服务器信息  | 
 -xlicinfo  | 
|
| 
 链接和库:  | 
||
| 
 允许/要求动态/静态库  | 
 -Bx  | 
|
| 
 只允许动态/静态库链接  | 
 -dy、-dn  | 
|
| 
 生成动态(共享对象)库  | 
 -G  | 
|
| 
 为动态库指定名称  | 
 -hname  | 
|
| 
 将目录增加到库搜索路径  | 
 -Lpath  | 
|
| 
 与库 libname.a 或 libname.so 链接  | 
 -lname  | 
|
| 
 将运行时库搜索路径生成到可执行文件中  | 
 -Rpath  | 
|
| 
 禁用递增链接程序 ild  | 
 -xildoff  | 
|
| 
 与优化的数学库链接  | 
 -xlibmopt  | 
|
| 
 与 Sun 性能库链接  | 
 -xlic_lib=sunperf  | 
|
| 
 链接编辑器选项  | 
 -zx  | 
|
| 
 在不重定位的情况下生成纯库  | 
 -ztext  | 
|
| 
 数字和浮点:  | 
||
| 
 使用非标准浮点首选项  | 
 -fnonstd  | 
|
| 
 选择 SPARC 非标准浮点  | 
 -fns  | 
|
| 
 启用输入过程中的运行时浮点溢出  | 
 -fpover  | 
|
| 
 选择 IEEE 浮点舍入模式  | 
 -fpround=r  | 
|
| 
 选择浮点优化级别  | 
 -fsimple=n  | 
|
| 
 选择浮点捕获模式  | 
 -ftrap=t  | 
|
| 
 指定用于格式化输入/输出的舍入方法  | 
 -iorounding=mode  | 
|
| 
 将单精度常数提升为双精度常量  | 
 -r8const  | 
|
| 
 启用区间运算并设置相应的浮点环境(包括 -xinterval)  | 
 -xia[=e]  | 
|
| 
 启用区间运算扩展  | 
 -xinterval[=e]  | 
|
| 
 优化与性能:  | 
||
| 
 分析循环以了解数据依赖性  | 
 -depend  | 
|
| 
 使用所选的选项进行优化  | 
 -fast  | 
|
| 
 指定优化级别  | 
 -On  | 
|
| 
 填充数据布局以便高效使用高速缓存  | 
 -pad[=p]  | 
|
| 
 在内存栈上分配局部变量  | 
 -stackvar  | 
|
| 
 启用循环解开  | 
 -unroll[=m]  | 
|
| 
 启用跨源文件的优化  | 
 -xcrossfile[=n]  | 
|
| 
 调用过程间优化传递  | 
 -xipo[=n]  | 
|
| 
 为 #pragma OPT 设置最高优化级别  | 
 -xmaxopt[=n]  | 
|
| 
 针对编译后优化进行编译  | 
 -xbinopt=prepare  | 
|
| 
 启用/调整编译器生成的预取指令  | 
 -xprefetch=list  | 
|
| 
 控制预取指令的自动生成  | 
 -xprefetch_level=n  | 
|
| 
 启用性能文件配置数据的生成或使用  | 
 -xprofile=p  | 
|
| 
 断言不会出现基于内存的陷阱  | 
 -xsafe=mem  | 
|
| 
 不执行增加代码大小的优化  | 
 -xspace  | 
|
| 
 自动生成对向量库函数的调用  | 
 -xvector[=yn]  | 
|
| 
 并行化:  | 
||
| 
 启用 DO 循环的自动并行化  | 
 -autopar  | 
|
| 
 显示循环的并行化信息  | 
 -loopinfo  | 
|
| 
 为手动编码的多线程编程进行编译  | 
 -mt  | 
|
| 
 接受 OpenMP API 指令并设置相应的环境  | 
 -xopenmp[=keyword]  | 
|
| 
 识别具有自动并行化的循环中的约简操作  | 
 -reduction  | 
|
| 
 冗余的并行化消息  | 
 -vpara  | 
|
| 
 源代码:  | 
||
| 
 定义预处理程序符号  | 
 -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  | 
|
编译器有许多可通过可选命令行参数选择的功能。下面的简要列表列出了一些常用选项,让您一睹为快。
表 3–4 常用选项| 
 操作  | 
 选项  | 
|---|---|
| 
 调试-为确保参数、通用块等的一致性而在例程之间进行的全局程序检查。  | 
 –Xlist  | 
| 
 调试-生成其他用于启用 dbx 和调试的符号表信息。  | 
 –g  | 
| 
 性能-调用优化器以生成运行速度更快的程序。  | 
 –O[n]  | 
| 
 性能-使用一组预先确定的选项,为本机平台生成高效的编译时和运行时。  | 
 –fast  | 
| 
 动态 (–Bdynamic) 或静态 (–Bstatic) 库绑定。  | 
 –Bx  | 
| 
 仅编译-禁止链接;为每个源文件生成一个 .o 文件。  | 
 –c  | 
| 
 输出文件-将可执行输出文件命名为 nm 而不是 a.out。  | 
 –o nm  | 
| 
 源代码-编译固定格式的 Fortran 源代码。  | 
 -fixed  | 
某些选项标志是可扩展为由其他标志组成的特定集合的宏。之所以提供这些选项标志,是为了便于指定通常一起用来选择某项功能的多个选项。
表 3–5 宏选项标志| 
 选项标志  | 
 扩展  | 
|---|---|
| 
 -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  | 
命令行上跟在宏标志后面的设置将覆盖或增加宏扩展。
提供以下选项的目的是为了与早期发行版的编译器和某些 Fortran 传统功能向后兼容。
表 3–6 向后兼容性选项| 
 操作  | 
 选项  | 
|---|---|
| 
 允许为常量参数赋值。  | 
 –copyargs  | 
| 
 在调用参数列表中将霍尔瑞斯常数视为字符或无类型。  | 
 -xhasc[={yes|no}]  | 
| 
 支持 Fortran 77 扩展和约定  | 
 -f77  | 
| 
 非标准运算-允许非标准运算。  | 
 –fnonstd  | 
| 
 为主机系统优化性能。  | 
 –native  | 
| 
 DO 循环-使用单行程 DO 循环。  | 
 –onetrip  | 
| 
 允许存在传统的别名情况  | 
 -xalias=keywords  | 
建议在生成可移植的 Fortran 95 程序时不要使用这些选项标志。
下面的选项被认为是已过时的,不应使用它们。在编译器的以后发行版本中可能会删除这些选项。
表 3–7 过时的 f95 选项| 
 选项标志  | 
 等效于  | 
|---|---|
| 
 -a  | 
 -xprofile=tcov  | 
| 
 -cg89  | 
 -xtarget=ss2  | 
| 
 -cg92  | 
 -xtarget=ss1000  | 
| 
 -explicitpar  | 
 使用 OpenMP 并行化;Sun/Cray 并行化已过时  | 
| 
 -mp  | 
 使用 OpenMP 并行化;Sun/Cray 并行化已过时  | 
| 
 -native  | 
 -xtarget=native  | 
| 
 -noqueue  | 
 许可证排队。不再需要。  | 
| 
 -p  | 
 文件配置。使用 -pg 或性能分析器  | 
| 
 -pic  | 
 -xcode=pic13  | 
| 
 -PIC  | 
 -xcode=pic32  | 
| 
 -sb  | 
 不再需要。  | 
| 
 -sbfast  | 
 不再需要。  | 
| 
 -silent  | 
 不再需要。  |