我了解gfortran可以编译f90或f95?它如何知道正在编译哪个版本?它能编译f77代码吗?Ubuntu是否已经有Fortran编译器,还是我需要下载gfortran?
gfortran可以根据文件扩展名猜测一些内容;如果文件的扩展名为.f、.f90、f95、.f03或.f08,它将假定采用固定(.f)或自由格式,并符合相应的标准。但是您可以通过选项-std=f2003强制编译Fortran 2003代码。例如,从文档中获得信息,
-std=std
指定程序期望符合的标准,可以是
f95
、f2003
、f2008
、f2018
、gnu
或legacy
之一。默认值为 std 为gnu ,它指定了包含GNU Fortran支持的所有扩展的最新Fortran标准的超集,尽管会对不推荐在新代码中使用的过时扩展给出警告。
legacy 值等效,但没有过时扩展的警告,可能对旧的非标准程序有用。
f95 、
f2003 、
f2008 和
f2018 值分别指定严格符合Fortran 95、Fortran 2003、Fortran 2008和Fortran 2018标准;所有超出相关语言标准的扩展都会导致错误,并为允许但在后期标准中过时的Fortran 77特性提供警告。
-std = f2008ts 允许包括技术规范(TS)29113的Fortran 2008标准,该规范进一步提高了Fortran与C的互操作性以及TS 18508中提供的Fortran的其他并行功能。
请注意,除了一些例外情况,Fortran 标准是高度向后兼容的,所以很多“好”的、符合标准的 Fortran-77 代码也是有效的 Fortran 2003 代码。问题在于,很多 80 年代及之前的 Fortran 代码既不“好”,也不符合标准。
-std=f95
是不够的。 - hertzsprung是的,gfortran可以编译FORTRAN 77和Fortran 90、95等。它已实现了许多2003年和2008年的功能。对于Fortran 90/95/2003/2008代码,一个很好的扩展名是.f90。有些其他的编译器无法识别.f95、.f2003等。当新的标准出来时,你真的想要重命名文件吗?使用.f或.for来代表FORTRAN 77。主要的区别在于编译器将期望的源布局:.f90为自由格式,.f或.for为固定格式。(大写文件类型会导致预处理器运行。)你可以通过选项-ffixed-form -ffixed-line-length-none强制指定固定格式布局。