这是 gfortran-4.8 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
gfortran - GNU Fortran 编译器
概要
gfortran [-c|-S|-E]
[-g[-PG.[-O水平]
[-W警告...] [-迂腐]
[-IDIR...] [-LDIR...]
[-D宏[=定义]...] [-U宏]
[-f选项...]
[-m机器选项...]
[-o 输出文件] 入档...
这里只列出最有用的选项; 其余部分见下文。
商品描述
这款 gfortran 命令支持所有支持的选项 GCC 命令。 只有选项
此处记录了特定于 GNU Fortran 的内容。
所有 GCC 和 GNU Fortran 选项都被接受 gfortran 并通过 GCC (以及任何
同时构建的其他驱动程序,例如 克++),因为将 GNU Fortran 添加到 GCC
发行版允许所有相关驱动程序接受 GNU Fortran 选项。
在某些情况下,期权有正面和负面的形式; 的否定形式 -ffoo 将
be -fno-foo. 本手册仅记录了这两种形式中的一种,以不属于
默认。
配置
以下是所有特定于 GNU Fortran 的选项的摘要,按类型分组。
解释在以下部分。
Fortran语言 语言选择 附加选项
-下降内在 -f 反斜杠 -fcray 指针 -fd 行即代码 -fd-行作为注释
-f默认双8 -fdefault-整数-8 -f默认实数8 -fdollar-ok
-固定线长-n -固定线长度-无 -f自由格式 -f自由行长度-n
-f自由行长度-无 -fimplicit-无 -finteger-4-integer-8 -fmax-标识符-长度
-fmodule-私有 -fno-固定形式 -fno-范围检查 -fopenmp -freal-4-real-10
-freal-4-real-16 -freal-4-real-8 -freal-8-real-10 -freal-8-real-16 -freal-8-real-4
-标准=STD
前处理 附加选项
-一种-题[=回答] -A题=回答 -C -CC -D宏[=定义] -H -P -U宏 -cpp -DD
-dI -dM -dN -dU -fworking-目录 -imultilib DIR -前缀 文件 -我引用 -isysroot DIR
-ISystem. DIR -nocpp -nostdinc -undef
误差 和 警告 附加选项
- 混叠 -墙 -黄蜂沙 -数组边界 -Wc 绑定类型 -Wcharacter-截断
-W转换 -W功能消除 - 隐式接口 - 隐式程序
-Wintrinsic-阴影 -Wintrinsics-标准 -Wline-截断 -Wno-align-commons -Wno-选项卡
-Wreal-q-常数 -令人惊讶 -Wunderflow -Wunused-参数 -Wrealloc-lhs Wrealloc-
全部 -Wtarget-生命周期 -fmax-错误=n -f仅语法 -迂腐 -迂腐的错误
调试 附加选项
-f回溯 -fdump-fortran 优化 -fdump-fortran-原始 -fdump-解析树
-ffpe陷阱=名单
目录 附加选项
-IDIR -JDIR -fintrinsic 模块路径 DIR
链接 附加选项
-静态-libgfortran
运行时 附加选项
-f转换=转变 -fmax-子记录长度=长度 -frecord 标记=长度 -fsign-零
代码 代 附加选项
- 积极的功能消除 -fblas-matmul-限制=n -fbounds-检查
-fcheck-数组临时值 -f检查=
-fcoarray= -fexternal-blas -ff2c -ffrontend-优化
-finit-字符=n -finit-整数=n -finit-本地-零 -finit-逻辑=
-有限实数= -fmax-数组-构造函数=n -fmax-堆栈-var-大小=n
-fno-align-commons -fno-自动 -fno-保护括号 -fno-下划线
-fno-整个文件 -fsecond-下划线 -fpack 派生的 -frealloc-lhs -递归
-frepack-数组 -fshort-枚举 -fstack 数组
附加选项 控制 Fortran语言 方言
以下选项控制编译器接受的 Fortran 方言的详细信息:
-f自由格式
-固定形式
指定源文件使用的布局。 自由格式布局是在
Fortran 90。固定格式传统上用于较旧的 Fortran 程序。 什么时候
两个选项都没有指定,源格式由文件扩展名决定。
-下降内在
此选项导致所有内在过程(包括 GNU 特定的扩展)
被接受。 这对 -std=f95 强制遵守标准,但得到
访问所有可用的内在函数 gfortran。 作为结果,
-Wintrinsics-标准 将被忽略,并且没有同名的用户定义过程
除非明确声明为“EXTERNAL”,否则将调用任何内在函数。
-fd 行即代码
-fd-行作为注释
对固定格式源中以“d”或“D”开头的行启用特殊处理。
如果 -fd 行即代码 给定选项,它们被视为第一列
包含一个空白。 如果 -fd-行作为注释 给出了选项,它们被视为
注释行。
-f默认双8
将“DOUBLE PRECISION”类型设置为 8 字节宽的类型。 如果 -f默认实数8 给出,
如果可能,“DOUBLE PRECISION”将被提升为 16 字节,并且
-f默认双8 可以用来防止这种情况。 像这样的实常数
“1.d0”不会被改变 -f默认实数8 不过,也一样 -f默认双8 不
不影响它。
-fdefault-整数-8
将默认整数和逻辑类型设置为 8 字节宽的类型。 如果这什么都不做
已经是默认值。 此选项还会影响整数常量的类型,例如
42.
-f默认实数8
将默认真实类型设置为 8 字节宽的类型。 如果这已经是
默认。 此选项也影响非双实常数的种类,如 1.0,和
如果可能,确实将“DOUBLE PRECISION”的默认宽度提升到 16 个字节,除非
也给出了“-fdefault-double-8”。
-fdollar-ok
让 $ 作为符号名称中的有效非第一个字符。 开头的符号 $ 旨在
被拒绝,因为不清楚哪些规则适用于不同的隐式类型
供应商执行不同的规则。 使用 $ 在“IMPLICIT”语句中也被拒绝。
-f 反斜杠
从单个反斜杠更改字符串文字中反斜杠的解释
字符到“C 风格”转义字符。 以下组合展开
“\a”、“\b”、“\f”、“\n”、“\r”、“\t”、“\v”、“\\”和“\0”到 ASCII 字符
警报、退格、换页、换行、回车、水平制表符、垂直制表符、
分别为反斜杠和 NUL。 此外,“\x”nn, "\u"分 和你”恩恩恩恩
(其中每个 n 是一个十六进制数字)被翻译成 Unicode 字符
对应于指定的代码点。 一个字符的所有其他组合
\ 前面是未扩展的。
-fmodule-私有
将模块实体的默认可访问性设置为“PRIVATE”。 使用相关
除非明确声明为“PUBLIC”,否则实体将无法访问。
-固定线长-n
设置在典型固定格式行中忽略字符后的列
源文件,并在之后假定空格(就像填充到该长度一样)
固定形式的短线的末端。
流行的价值观 n 包括 72(标准和默认)、80(卡片图像)和
132(对应于一些流行编译器中的“扩展源”选项)。 n 五月
也是 没有,这意味着整行都是有意义的,并且继续字符
常量从不附加隐式空格来填充行。
-固定线长度-0 与...具有相同的含义 -固定线长度-无.
-f自由行长度-n
设置在源代码中典型的自由格式行中忽略字符的列
文件。 默认值为 132。 n 也许 没有,这意味着整行是
有意义的。 -f自由行长度-0 与...具有相同的含义 -f自由行长度-无.
-fmax-标识符-长度=n
指定允许的最大标识符长度。 典型值为 31 (Fortran 95) 和
63(Fortran 2003 和 Fortran 2008)。
-fimplicit-无
指定不允许隐式类型,除非被显式“IMPLICIT”覆盖
声明。 这相当于在每个开头添加“隐式无”
的程序。
-finteger-4-integer-8
将所有“INTEGER(KIND=4)”实体提升为“INTEGER(KIND=8)”实体。 如果“种类=8”
不可用,然后将发出错误。 应谨慎使用此选项
并且可能不适合您的代码。 可能引起关注的领域包括致电
外部过程,在“等效”和/或“通用”中对齐,通用接口,
BOZ 字面常量转换和 I/O。 中间体检验
翻译后的 Fortran 代码的表示,由 -fdump-tree-原始,东京国立癌症中心医院
提出了建议。
-fcray 指针
启用 Cray 指针扩展,它提供类似 C 的指针功能。
-fopenmp
启用 OpenMP 扩展。 这包括自由形式的 OpenMP "!$omp" 指令
和固定形式的“c$omp”、*$omp 和“!$omp”指令,“!$”条件编译
自由形式的哨兵和固定形式的 "c$"、"*$" 和 "!$" 哨兵,以及当
链接安排要链接的 OpenMP 运行时库。选项 -fopenmp
暗示 -递归.
-fno-范围检查
禁用对常量表达式简化结果的范围检查
汇编。 例如,GNU Fortran 会在编译时给出错误,当
简化“a = 1./0”。 使用此选项,不会出现错误,并且会显示“a”
分配值“+Infinity”。 如果表达式的计算结果超出了
["-HUGE()":"HUGE()"] 的相关范围,则表达式将替换为 "-Inf"
或“+Inf”(视情况而定)。 同样,“DATA i/Z'FFFFFFFF'/”将产生一个整数
在大多数系统上溢出,但与 -fno-范围检查 该值将“环绕”并且
“i”将被初始化为 -1。
-freal-4-real-8
-freal-4-real-10
-freal-8-real-4
-freal-8-real-10
-freal-8-real-16
将所有“REAL(KIND=M)”实体提升为“REAL(KIND=N)”实体。 如果 "REAL(KIND=N)" 是
不可用,然后将发出错误。 所有其他真实类型不受影响
通过这个选项。 这些选项应谨慎使用,可能不适合
你的代码。 可能需要关注的领域包括调用外部程序、对齐
在“等效”和/或“通用”中,通用接口,BOZ 文字常量转换,
和输入/输出。 检查已翻译 Fortran 的中间表示
代码,由 -fdump-tree-原始, 建议。
-标准=STD
指定程序预期符合的标准,可能是以下标准之一
f95, f2003, f2008, GNU或 遗产. 默认值为 STD is GNU, 指定
Fortran 95 标准的超集,包括所有支持的扩展
GNU Fortran,尽管会针对不推荐的过时扩展给出警告
用于新代码。 这 遗产 值是等效的,但没有警告
过时的扩展,可能对旧的非标准程序有用。 这 f95, f2003
和 f2008 值指定严格遵守 Fortran 95、Fortran 2003 和
Fortran 2008 标准,分别; 对于超出的所有扩展都给出了错误
相关语言标准,并针对 Fortran 77 功能给出警告
允许但在以后的标准中已过时。 -std=f2008ts 允许 Fortran 2008
标准,包括对进一步的技术规范 (TS) 29113 的补充
Fortran 与 C 的互操作性。
启用 和 定制 预处理
预处理器相关选项。 见部分 前处理 和 有条件 汇编
关于预处理的更多详细信息 gfortran.
-cpp
-nocpp
启用预处理。 如果文件扩展名
is .fpp, .FPP, .F, 。为了, .FTN, .F90, .F95, .F03 or .F08. 使用此选项手动
启用任何类型的 Fortran 文件的预处理。
要禁用对具有上述任何扩展名的文件进行预处理,请使用
否定形式: -nocpp.
预处理器以传统模式运行。 文件格式的任何限制,
尤其是行长的限制,也适用于预处理输出,所以它
可能建议使用 -f自由行长度-无 or -固定线长度-无
选项。
-dM 代替正常的输出,生成一个“#define”指令列表,用于所有
在预处理器执行期间定义的宏,包括预定义的宏。
这使您可以找出在您的版本中预定义的内容
预处理器。 假设你没有文件 foo.f90, 命令
触摸 foo.f90; gfortran -cpp -E -dM foo.f90
将显示所有预定义的宏。
-DD 喜欢 -dM 除了两个方面:它不包括预定义的宏,它
输出“#define”指令和预处理结果。 两种
输出到标准输出文件。
-dN 喜欢 -DD,但只发出宏名称,而不是它们的扩展。
-dU 喜欢 dD 除了只有被扩展的宏,或者其定义性在
预处理器指令,是输出; 输出被延迟,直到使用或测试
宏; 和 '#undef' 指令也输出用于测试但未定义的宏
时间。
-dI 除了预处理的结果外,还输出“#include”指令。
-fworking-目录
在预处理器输出中启用行标记的生成,这将使编译器
在预处理时知道当前的工作目录。 当这个选项是
启用,预处理器将在初始行标记之后发出第二个行标记
当前工作目录后跟两个斜杠。 GCC 将使用这个
目录,当它存在于预处理输入中时,作为发出的目录
某些调试信息格式的当前工作目录。 这个选项是
如果启用调试信息,则隐式启用,但这可以通过
否定形式 -fno-工作目录。 如果 -P 标志存在于命令中
行,此选项无效,因为不会发出任何“#line”指令。
-irafter DIR
搜索 DIR 对于包含文件,但在指定的所有目录之后执行 -I 和
标准系统目录已用尽。 DIR 被视为一个系统
包括目录。 如果 dir 以“=”开头,则“=”将被替换为
sysroot 前缀; 看 --系统根目录 和 -isysroot.
-imultilib DIR
使用 DIR 作为包含特定于目标的 C++ 头文件的目录的子目录。
-前缀 字首
指定 字首 作为后续的前缀 -i 带前缀 选项。 如果 字首
代表一个目录,你应该包括最后的'/'。
-isysroot DIR
这个选项就像 --系统根目录 选项,但仅适用于头文件。 见
--系统根目录 选项以获取更多信息。
-我引用 DIR
搜索 DIR 仅适用于使用 "#include "file"" 请求的头文件; 他们不是
搜索“#include ", 在指定的所有目录之前 -I 在之前
标准系统目录。 如果 DIR 以“=”开头,那么“=”将被替换为
sysroot 前缀; 看 --系统根目录 和 -isysroot.
-ISystem. DIR
搜索 DIR 对于头文件,在指定的所有目录之后 -I 但在此之前
标准系统目录。 将其标记为系统目录,以便获得相同的
应用于标准系统目录的特殊处理。 如果 DIR 开始于
"=",那么 "=" 将被 sysroot 前缀替换; 看 --系统根目录 和 -isysroot.
-nostdinc
不要在标准系统目录中搜索头文件。 只有目录
您已指定 -I 选项(和当前文件的目录,如果
适当)进行搜索。
-undef
不要预定义任何特定于系统或特定于 GCC 的宏。 标准预定义
宏保持定义。
-A谓词=回答
使用谓词进行断言 谓词 并回答 回答. 这个表格是
首选旧形式 -A 谓词(答案),它仍然受支持,因为它
不使用外壳特殊字符。
-一种-谓词=回答
用谓词取消断言 谓词 并回答 回答.
-C 不要丢弃评论。 所有注释都传递到输出文件,除了
对于已处理指令中的注释,这些注释与指令一起被删除。
使用时应做好副作用的准备 -C; 它导致预处理器
将评论视为其本身的标记。 例如,评论出现在
将是指令行的开始具有将该行变成
普通的源代码行,因为该行的第一个标记不再是“#”。
警告:这当前仅处理 C 样式注释。 预处理器还没有
识别 Fortran 风格的注释。
-CC 不要丢弃注释,包括在宏扩展期间。 这就像 -C, 除
包含在宏中的注释也会传递到输出文件中
宏被展开。
除了副作用之外 -C 选项, -CC 选项导致所有 C++ 风格
要转换为 C 样式注释的宏中的注释。 这是为了防止以后
使用该宏无意中注释掉了源代码行的其余部分。
这款 -CC option 通常用于支持 lint 注释。
警告:这当前仅处理 C 和 C++ 样式的注释。 预处理器
还不能识别 Fortran 风格的注释。
-D姓名
将名称预定义为宏,定义为 1。
-D姓名=定义
内容 定义 被标记和处理,就好像它们出现在
'#define' 指令中的第三阶段翻译。 特别是,该定义将
被嵌入的换行符截断。
如果您从 shell 或类 shell 程序调用预处理器,您可能需要
使用 shell 的引用语法来保护字符,例如具有
shell 语法中的意思。
如果你想在命令行上定义一个类似函数的宏,写下它的参数
在等号(如果有)前用括号括起来的列表。 括号是
对大多数 shell 有意义,因此您需要引用该选项。 使用 sh 和 csh,
“-D'name(args...)=definition'”有效。
-D 和 -U 选项按照它们在命令行中给出的顺序进行处理。 全部
-imacros 文件和 -include 文件选项在所有 -D 和 -U 选项之后处理。
-H 除了其他正常活动之外,打印所使用的每个头文件的名称。 每个
name 缩进以显示它在“#include”堆栈中的深度。
-P 禁止在预处理器的输出中生成线标记。 这可能是
在非 C 代码上运行预处理器时很有用,并且将被发送
到可能被行标记混淆的程序。
-U姓名
取消任何以前的定义 姓名,无论是内置的还是提供了一个 -D 选项。
附加选项 至 请求 or 压制 错误 和 警告
错误是报告 GNU Fortran 编译器无法编译的诊断消息
相关的源代码。 编译器将继续处理程序
尝试报告更多错误以帮助调试,但不会产生任何已编译的
输出。
警告是报告结构的诊断消息,这些结构不是固有的
错误但有风险或暗示程序中可能存在错误。
除非 -错误 指定,它们不会阻止程序的编译。
您可以请求许多具有以下选项的特定警告 -W, 例如 - 隐含的
请求对隐式声明发出警告。 这些特定警告选项中的每一个也
有一个否定形式开头 -没有- 关闭警告; 例如, -Wno-隐式.
本手册仅列出了两种形式中的一种,以非默认形式为准。
这些选项控制 GNU Fortran 产生的错误和警告的数量和种类:
-fmax-错误=n
将错误消息的最大数量限制为 n,此时 GNU Fortran 退出
而不是尝试继续处理源代码。 如果 n 是 0,没有
限制产生的错误消息的数量。
-f仅语法
检查代码是否存在语法错误,但不要实际编译它。 这将产生
代码中存在的每个模块的模块文件,但没有其他输出文件。
-迂腐
使用 Fortran 95 的扩展发出警告。 -迂腐 也适用于
C 语言结构出现在 GNU Fortran 源文件中,例如使用 \e
在像“#include”这样的指令中的字符常量中。
有效的 Fortran 95 程序应该使用或不使用此选项正确编译。
但是,如果没有这个选项,某些 GNU 扩展和传统的 Fortran 功能
也支持。 有了这个选项,他们中的许多人都被拒绝了。
一些用户尝试使用 -迂腐 检查程序的一致性。 他们很快发现
它没有完全按照他们的意愿去做——它发现了一些非标准的做法,但是
不是全部。 但是,欢迎在这方面对 GNU Fortran 进行改进。
这应该与 -std=f95, -std=f2003 or -std=f2008.
-迂腐的错误
喜欢 -迂腐,除了会产生错误而不是警告。
-墙
启用与我们建议避免的使用相关的常用警告选项
并且我们认为很容易避免。 这目前包括 - 混叠,
-黄蜂沙, -W转换, -令人惊讶, -Wc 绑定类型, -Wintrinsics-标准,
-Wno-选项卡, -Wintrinsic-阴影, -Wline-截断, -Wtarget-生命周期, -Wreal-q-常数
和 -未使用.
- 混叠
警告虚拟参数可能的别名。 具体来说,它警告如果相同
实际参数与带有“INTENT(IN)”的虚拟参数和一个虚拟参数相关联
带有显式接口的调用中带有“INTENT(OUT)”的参数。
以下示例将触发警告。
接口
子程序 bar(a,b)
整数,意图(输入):: a
整数,意图(输出):: b
结束子程序
终端接口
整数 :: a
调用条(a,a)
-黄蜂沙
警告在连续字符常量中缺少&符号。 发出警告
- -黄蜂沙, -迂腐, -std=f95, -std=f2003 和 -std=f2008. 注:无
&符号在连续字符常量中给出,GNU Fortran 假定在连续
启动“与”号之后的第一个非注释、非空白字符
延续。
-Warray-临时
警告编译器生成的临时数组。 生成的信息
此警告有时在优化中很有用,以避免出现此类临时情况。
-Wc 绑定类型
如果 a 变量可能无法与 C 互操作,则发出警告。 特别是,警告如果
变量已使用具有默认类型的内部类型声明,而不是使用
为内在“ISO_C_Binding”中的 C 互操作性定义的种类参数
模块。 此选项隐含在 -墙.
-Wcharacter-截断
当字符分配将截断分配的字符串时发出警告。
-Wline-截断
当源代码行被截断时发出警告。 此选项隐含在 -墙.
-W转换
警告可能会更改表达式值的隐式转换
转换后。 暗示的 -墙.
-Wconversion-额外
警告不同类型和种类之间的隐式转换。
-维克斯特拉
为可能有问题的语言功能的使用启用一些警告选项。
目前包括 -W比较实数 和 -Wunused-参数.
- 隐式接口
如果在没有显式接口的情况下调用过程,则发出警告。 注意这只检查
存在显式接口。 它不检查声明的接口
跨程序单元是一致的。
- 隐式程序
如果调用的过程既没有显式接口也没有显式接口,则发出警告
声明为“外部”。
-Wintrinsics-标准
警告如果 gfortran 找到一个类似于内部不可用的过程
当前选择的标准(与 -标准) 并将其视为“外部”程序,因为
这个的。 -下降内在 可用于从不触发此行为并始终链接
无论所选标准如何,都为内在的。
-Wreal-q-常数
如果实数常量包含“q”指数字母,则产生警告。
-令人惊讶
遇到“可疑”代码结构时产生警告。 尽管
从技术上讲,这些通常表明发生了错误。
目前,在以下情况下会产生警告:
· 一个 INTEGER SELECT 结构有一个 CASE 永远不能匹配作为它的低
值大于其上限值。
· LOGICAL SELECT 构造具有三个 CASE 语句。
· TRANSFER 指定比目的地短的源。
· 一个函数结果的类型被多次声明为相同的类型。 如果
-迂腐 或启用了符合标准的模式,这是一个错误。
· “CHARACTER”变量声明为负长度。
-Wtabs
默认情况下,制表符被接受为空格,但制表符不是 Fortran 的成员
字符集。 对于连续行,制表符后跟 1 到 9 之间的数字是
支持的。 -Wno-选项卡 如果遇到选项卡,将导致发出警告。 笔记,
-Wno-选项卡 活跃于 -迂腐, -std=f95, -std=f2003, -std=f2008 和 -墙.
-Wunderflow
当遇到数值常量表达式时产生警告,这会产生一个
编译期间下溢。
-Wintrinsic-阴影
如果用户定义的过程或模块过程与
固有的; 在这种情况下,显式接口或“EXTERNAL”或“INTRINSIC”
可能需要声明才能稍后将调用解析为所需的
内在/程序。 此选项隐含在 -墙.
-未使用的虚拟参数
警告未使用的虚拟参数。 此选项隐含在 -墙.
-Wunused-参数
与之相反 GCC的意思 -Wunused-参数, gfortran的实现
选项不会警告未使用的虚拟参数(请参阅 -未使用的虚拟参数),但
关于未使用的“参数”值。 -Wunused-参数 不包括在 -墙 但是
由暗示 -墙 -维克斯特拉.
-Walign-公地
默认情况下, gfortran 警告任何为适当填充变量的场合
在“COMMON”块内对齐。 可以通过以下方式关闭此警告
-Wno-align-commons要了解在年少时习得第二语言的各种好处的完整摘要,请参考: -falign-公地.
-W功能消除
警告是否通过启用的优化消除了对函数的任何调用
-ffrontend-优化 选项。
-Wrealloc-lhs
当编译器可能插入代码以分配或重新分配一个
内在赋值中的内在类型的可分配数组变量。 在热循环中,
Fortran 2003 重新分配功能可能会降低性能。 如果数组是
已经分配了正确的形状,考虑使用全阵列阵列规格
(例如“(:,:,:)”)用于左侧的变量以防止重新分配
查看。 请注意,在某些情况下会显示警告,即使编译器将
优化重新分配检查。 例如,当右侧包含
同一个变量乘以一个标量。 也可以看看 -frealloc-lhs.
-Wrealloc-lhs-all
当编译器插入代码以分配或重新分配一个
可分配变量; 这包括标量和派生类型。
-W比较实数
在比较真实或复杂类型的相等或不等时发出警告。 这个选项是
由暗示 -维克斯特拉.
-Wtarget-生命周期
如果指针赋值中的指针可能比其目标长,则发出警告。 这个
选项由 -墙.
-错误
将所有警告变成错误。
其中一些在编译用 Fortran 编写的程序时不起作用。
附加选项 调试 您的 程序 or GNU Fortran语言
GNU Fortran 有各种特殊选项,可用于调试您的程序或
GNU Fortran 编译器。
-fdump-fortran-原始
将源程序翻译成内部后输出内部解析树
表示。 仅对调试 GNU Fortran 编译器本身非常有用。
-fdump-fortran 优化
前端优化后输出解析树。 只对调试有用
GNU Fortran 编译器本身。
-fdump-解析树
将源程序翻译成内部后输出内部解析树
表示。 仅对调试 GNU Fortran 编译器本身非常有用。
此选项已弃用; 改用“-fdump-fortran-original”。
-ffpe陷阱=名单
指定要启用的浮点异常陷阱列表。 在大多数系统上,如果
发生浮点异常并启用该异常的陷阱,SIGFPE
信号将被发送,程序被中止,产生一个核心文件,用于
调试。 名单 是(可能是空的)逗号分隔的以下列表
例外情况: 无效 (无效的浮点运算,例如“SQRT(-1.0)”), 零
(被零除), 溢出 (浮点运算中的溢出), 下溢
(浮点运算中的下溢), 不准确 (期间精度损失
操作),以及 异常的 (对非正规值执行的操作)。 前五个
例外对应于五个 IEEE 754 例外,而最后一个 (异常的)
不是 IEEE 754 标准的一部分,但在一些常见架构上可用
比如x86。
前三个例外(无效, 零及 溢出) 常表示严重
错误,除非程序有处理这些异常的规定,
为这三个异常启用陷阱可能是一个好主意。
许多(如果不是大多数)浮点运算会因舍入而导致精度损失,
因此,“ffpe-trap=inexact”在实践中可能是无趣的。
默认情况下,不启用任何异常陷阱。
-fno-回溯
当遇到严重的运行时错误或发出致命信号时
(分段错误、非法指令、总线错误、浮点异常和
其他具有动作的 POSIX 信号 核心),Fortran 运行时库尝试
输出错误的回溯。 “-fno-backtrace”禁用回溯生成。
该选项仅对 Fortran 主程序的编译有影响。
附加选项 目录 搜索、
这些选项会影响 GNU Fortran 搜索“INCLUDE”指定的文件的方式
指令以及它搜索以前编译的模块的位置。
它还影响使用的搜索路径 CPP 用于预处理 Fortran 源代码时。
-IDIR
这些会影响“INCLUDE”指令(以及“#include”指令)的解释
的指令 CPP 预处理器)。
还要注意,一般行为 -I 并且“INCLUDE”几乎与
-I 带有“#include” CPP 预处理器,关于寻找 头文件.gcc
文件和其他类似的东西。
此路径也用于搜索 的.mod 以前编译的模块时的文件
“USE”语句所要求的。
-JDIR
此选项指定放置的位置 的.mod 编译模块的文件。 它也被添加
到要通过“USE”语句搜索的目录列表。
默认为当前目录。
-fintrinsic 模块路径 DIR
此选项指定预编译的内部模块的位置,如果它们不是
在编译器预期的默认位置。
影响 此 链接 步
当编译器将目标文件链接到可执行文件时,这些选项就会发挥作用
输出文件。 如果编译器没有执行链接步骤,它们就毫无意义。
-静态-libgfortran
在提供 语言库 作为共享和静态库,此选项
强制使用静态版本。 如果没有共享版本 语言库 被建
配置编译器时,此选项无效。
影响 运行 行为
这些选项会影响使用 GNU Fortran 编译的程序的运行时行为。
-f转换=转变
指定无格式文件的数据表示。 转换的有效值
是: 本地人,默认; 交换,在大端和小端之间交换; 大端, 使用
未格式化文件的大端表示; 小尾数, 使用小端
未格式化文件的表示。
本篇 选项 具有 an 效果 仅由 ,尤其是 用过的 in 此 主 程序。 这款 “兑换” 说明符
和 此 GFORTRAN_CONVERT_UNIT 环境 变量 覆盖 此 默认 指定 by
-f 转换.
-frecord 标记=长度
指定未格式化文件的记录标记长度。 有效值 长度
是 4 和 8。默认值为 4。 本篇 is 不同 在 以前 版本 of gfortran,
它在大多数系统上指定默认记录标记长度为 8。 如果你想
读取或写入与早期版本兼容的文件 gfortran, 使用
-f记录标记=8.
-fmax-子记录长度=长度
指定子记录的最大长度。 长度的最大允许值为
2147483639,也是默认值。 仅对 gfortran 使用真正有用
测试套件。
-fsign-零
启用后,写入符号位设置为零的浮点数
作为格式化输出中的负数并在“SIGN”中视为负数
固有的。 -fno 符号零 不打印零值(或值
I/O 舍入为零)并将零视为“SIGN”内在函数中的正数
与 Fortran 77 兼容。默认为 -fsign-零.
附加选项 码 代 公约
这些与机器无关的选项控制代码中使用的接口约定
一代。
它们中的大多数有正面和负面两种形式; 的否定形式 -ffoo 将
-fno-foo. 在下表中,只列出了其中一种形式——不属于
默认。 您可以通过删除来找出另一种形式 NO- 或添加它。
-fno-自动
将每个程序单元(标记为 RECURSIVE 的除外)视为“SAVE”语句
为其中引用的每个局部变量和数组指定。 不影响
常见的块。 (某些 Fortran 编译器在名称下提供此选项 -静态的 or
-节省.) 默认值,即 -f自动, 将堆栈用于更小的局部变量
比给出的值 -fmax-堆栈变量大小. 使用选项 -递归 不使用
静态记忆。
-ff2c
生成设计为与生成的代码兼容的代码 g77 和 f2c.
使用的调用约定 g77 (最初在 f2c) 需要函数
返回类型默认为“REAL”以实际返回 C 类型“double”和函数
返回类型“COMPLEX”以通过调用中的额外参数返回值
指向存储返回值的位置的序列。 默认GNU下
调用约定,这些函数只是像在 GNU 中一样返回它们的结果
C---默认“REAL”函数返回C类型“float”,“COMPLEX”函数返回
GNU C 类型“复杂”。 此外,此选项意味着 -fsecond-下划线
选项,除非 -fno-秒下划线 明确要求。
这不会影响与 语言库
图书馆。
警告: 混合编译的 Fortran 代码不是一个好主意 -ff2c 与代码
使用默认编译 -fno-f2c 调用约定为,调用“COMPLEX”或
用不同的编译器编译的程序部分之间的默认“真实”函数
调用约定将在执行时中断。
警告: 这将破坏传递默认“REAL”类型的内在函数的代码
或“COMPLEX”作为实际参数,因为库实现使用 -fno-f2c
调用约定。
-fno-下划线
不要通过附加来转换 Fortran 源文件中指定的实体名称
给他们下划线。
在 -资助者评分 实际上,GNU Fortran 将一个下划线附加到外部名称
没有下划线。 这样做是为了确保与许多人生成的代码兼容
UNIX Fortran 编译器。
注意:: GNU Fortran 的默认行为与 f2c 和 g77请
使用 -ff2c 如果您希望使用 GNU Fortran 编译的目标文件是
与使用这些工具创建的目标代码兼容。
用于 -fno-下划线 除非您正在尝试解决问题,否则不建议使用
例如将 GNU Fortran 集成到现有系统环境中(vis-a-vis
现有的库、工具等)。
例如, -资助者评分,并假设其他默认值,如 -fcase-下 和
“j()”和“max_count()”是外部函数,而“my_var”和“lvar”是
局部变量,像这样的语句
I = J() + MAX_COUNT (MY_VAR, LVAR)
被实现为类似于:
i = j_() + max_count__(&my_var__, &lvar);
在 -fno-下划线,同样的语句被实现为:
i = j() + max_count(&my_var, &lvar);
用于 -fno-下划线 允许直接指定用户定义的名称,而
调试以及将 GNU Fortran 代码与其他语言连接时。
请注意,仅仅因为名称匹配 而不去 表示接口由
外部名称的 GNU Fortran 匹配其他一些实现的接口
同名的语言。 也就是说,让 GNU Fortran 生成的代码链接到
由其他编译器使用此方法或任何其他方法生成的代码只能是
整体解决方案的一小部分---让两个编译器生成的代码
就命名以外的问题达成一致可能需要付出巨大的努力,而且与命名不同
分歧,链接器通常无法检测到这些其他领域的分歧。
另外,请注意,与 -fno-下划线, 缺少附加下划线引入
用户定义的外部名称与名称冲突的可能性非常大
在系统库中,这可能会使查找未解决的引用错误相当
在某些情况下很难——它们可能发生在程序运行时,并且仅显示为
运行时的错误行为。
在 GNU Fortran 的未来版本中,我们希望改进命名和链接问题,以便
调试总是涉及使用在源代码中出现的名称,即使
链接器看到的名称被修改,以防止之间的意外链接
具有不兼容接口的程序。
-fno-整个文件
此标志使编译器解析和翻译文件中的每个过程
分别。
默认情况下,整个文件被解析并放置在单个前端树中。 期间
解决方案,除了所有通常的检查和修正,引用外部
同一文件中的程序会影响该程序的解析,如果不是
已经完成,并检查接口。 通过改变来解决依赖关系
文件被翻译成后端树的顺序。 因此,一个程序
被引用的在引用和后端复制之前被翻译
消除了树声明。
这款 -fno-整个文件 选项已弃用,可能会导致错误的代码。
-fsecond-下划线
默认情况下,GNU Fortran 会在外部名称后附加下划线。 如果这个选项是
使用的 GNU Fortran 将两个下划线附加到带有下划线的名称和一个下划线
到没有下划线的外部名称。 GNU Fortran 还附加了两个下划线
带有下划线的内部名称以避免与外部名称的命名冲突。
此选项在以下情况下无效 -fno-下划线 有效。 它暗示了
-ff2c 选项。
否则,使用此选项,诸如“MAX_COUNT”之类的外部名称将实现为
引用链接时外部符号“max_count__”,而不是“max_count_”。
这是与兼容所必需的 g77 和 f2c,并通过使用
-ff2c 选项。
-fcoarray=
没有
禁用 coarray 支持; 使用 coarray 声明和图像控制语句
会产生编译时错误。 (默认)
单
单图像模式,即“num_images()”始终为一。
LIB 基于库的协阵列并行化; 一个合适的 GNU Fortran coarray 库
需要链接。
-f检查=
启用运行时检查的生成; 参数应是逗号分隔的列表
以下关键字。
所有 启用所有运行时测试 -f检查.
阵列临时
在运行时发出警告,当传递实际参数时必须使用临时数组
生成。 此警告生成的信息有时在以下方面很有用
优化,以避免这种临时性。
注意:警告仅在每个位置打印一次。
界限
启用对数组下标和声明的运行时检查的生成
最小值和最大值。 它还检查假定和延迟的数组索引
根据实际分配的边界形状数组并确保所有字符串
对于没有显式类型规范的字符数组构造函数,长度是相等的。
一些检查要求 -fcheck=边界 设置为编译主
程序。
注意:将来这可能还包括其他形式的检查,例如,检查
子串引用。
do 启用对循环迭代的无效修改生成运行时检查
变量。
成员 启用生成内存分配的运行时检查。 注意:此选项
不影响使用“ALLOCATE”语句的显式分配,这将是
总是检查。
指针
启用对指针和可分配项的运行时检查的生成。
递归
启用为递归调用的子程序生成运行时检查和
未标记为递归的函数。 也可以看看 -递归. 注意:这
check 不适用于 OpenMP 程序,如果与
-递归 和 -fopenmp.
-fbounds-检查
已弃用的别名 -fcheck=边界.
-fcheck-数组临时值
已弃用的别名 -fcheck=数组临时.
-fmax-数组-构造函数=n
此选项可用于增加数组构造函数中允许的上限。
下面的代码需要这个选项来在编译时扩展数组。
程序测试
隐式无
整数 j
整数,参数 :: n = 100000
整数,参数 :: i(n) = (/ (2*j, j = 1, n) /)
打印 '(10(I0,1X))', i
结束程序测试
警告: 本篇 选项 能够 铅 至 长 编 时 和 过度地 大 对象
文件。
的默认值 n 是65535。
-fmax-堆栈-var-大小=n
此选项指定将放入的最大数组的大小(以字节为单位)
堆; 如果超出大小,则使用静态内存(标记为的过程除外)
递归)。 使用选项 -递归 允许递归过程
具有 RECURSIVE 属性或用于并行程序。 用 -fno-自动 从不使用
堆栈。
此选项目前仅影响使用常量边界声明的本地数组,并且可能
不适用于所有字符变量。 GNU Fortran 的未来版本可能会改进这一点
行为。
的默认值 n 是32768。
-fstack 数组
添加此选项将使 Fortran 编译器放置所有本地数组,即使是那些
堆栈内存中的未知大小。 如果您的程序使用非常大的本地数组
可能您必须在某些情况下扩展堆栈内存的运行时限制
操作系统。 默认情况下在优化级别启用此标志 -奥法斯特.
-fpack 派生的
这个选项告诉 GNU Fortran 尽可能紧密地打包派生类型成员。
使用此选项编译的代码可能与不使用此选项编译的代码不兼容
此选项,并且可能执行得更慢。
-frepack-数组
在某些情况下,GNU Fortran 可能会通过
描述非连续内存区域的描述符。 此选项将代码添加到
函数序言在运行时将数据重新打包到一个连续的块中。
这应该会导致对数组的更快访问。 然而它可以引入
函数调用的显着开销,尤其是当传递的数据是
不连续。
-fshort-枚举
提供此选项是为了与使用编译的 C 代码进行互操作
-fshort-枚举 选项。 它会让 GNU Fortran 选择最小的“INTEGER”类型
给定的枚举器集将适合,并为所有枚举器提供这种类型。
-fexternal-blas
此选项将使 gfortran 为某些矩阵生成对 BLAS 函数的调用
像“MATMUL”这样的操作,而不是使用我们自己的算法,如果
涉及的矩阵大于给定的限制(见 -fblas-matmul-限制)。 这可能是
如果优化的供应商 BLAS 库可用,则有利可图。 BLAS 库将
必须在链接时指定。
-fblas-matmul-限制=n
只有当 -fexternal-blas 有效。 矩阵的矩阵乘法
尺寸大于(或等于) n 将通过调用 BLAS 函数来执行,
而其他人将被处理 gfortran 内部算法。 如果涉及的矩阵
不是正方形,大小比较是使用几何平均值进行的
参数和结果矩阵的维度。
的默认值 n 是30。
-递归
通过强制在堆栈上分配所有本地数组来允许间接递归。
此标志不能与 -fmax-堆栈-var-大小= or -fno-自动.
-finit-本地-零
-finit-整数=n
-有限实数=
-finit-逻辑=
-finit-字符=n
这款 -finit-本地-零 选项指示编译器初始化本地“INTEGER”,
“REAL”和“COMPLEX”变量为零,“LOGICAL”变量为假,“CHARACTER”
变量转换为空字节字符串。 细粒度的初始化选项是
由...提供 -finit-整数=n, -有限实数= (这也
初始化局部“COMPLEX”变量的实部和虚部),
-finit-逻辑=及 -finit-字符=n (哪里 n 是一个 ASCII 字符
值)选项。 这些选项不初始化
· 可分配的数组
· 派生类型变量的组成部分
· 出现在“EQUIVALENCE”语句中的变量。
(这些限制可能会在未来的版本中删除)。
请注意 -finit-real=nan 选项初始化“REAL”和“COMPLEX”变量
安静的NaN。 对于信号 NaN 使用 -finit-real=snan; 但是请注意,编译时
优化可能会将它们转换为安静的 NaN 并且需要启用捕获
(例如通过 -ffpe 陷阱).
最后,请注意,启用任何 -有限-* 选项将使警告静音
会被发射 -Wun初始化 对于受影响的局部变量。
-falign-公地
默认情况下, gfortran 通过以下方式强制“COMMON”块中的所有变量正确对齐
根据需要填充它们。 在某些平台上这是强制性的,在其他平台上它会增加
表现。 如果未使用一致的数据类型声明“COMMON”块
在任何地方,这种填充都会引起麻烦,并且 -fno-align-commons 可用于
禁用自动对齐。 此选项的相同形式应用于所有文件
共享一个“COMMON”块。 为避免“COMMON”块中潜在的对齐问题,
建议将对象从大到小排序。
-fno-保护括号
默认情况下,表达式中的括号适用于所有优化级别,例如
编译器不做任何重新关联。 使用 -fno-保护括号 允许
编译器重新排序“REAL”和“COMPLEX”表达式以生成更快的代码。 注意
用于重新关联优化 -fno 有符号零 和 -fno-捕获数学 需要
生效。 默认情况下启用括号保护,除非 -奥法斯特 is
给定的。
-frealloc-lhs
内部赋值的可分配左侧是自动的
(re)allocated 如果它是未分配的或具有不同的形状。 选项是
默认情况下启用,除非 -std=f95 给出。 也可以看看 -Wrealloc-lhs.
- 积极的功能消除
具有相同参数列表的函数在语句中被消除,无论
这些功能是否标记为“PURE”。 例如,在
a = f(b,c) + f(b,c)
只会有一次对“f”的调用。 此选项仅适用于
-ffrontend-优化 有效。
-ffrontend-优化
此选项执行前端优化,基于操作 Fortran 部分
解析树。 任何默认启用 -O 选项。 由此启用的优化
选项包括消除表达式中相同的函数调用,删除
在比较和分配中不必要地调用“TRIM”并将 TRIM(a) 替换为
“a(1:LEN_TRIM(a))”。 可以通过指定取消选择 -fno-前端优化.
环境
这款 gfortran 编译器目前不使用任何环境变量来控制
它的操作超出了影响操作的操作 GCC.
使用 onworks.net 服务在线使用 gfortran-4.8