如果我正在编译f90或f95代码,gfortran如何判断?

时间:2012-06-04 15:56:24

标签: fortran fortran90 gfortran fortran77

我理解gfortran可以编译f90或f95吗?它如何知道它正在编译哪一个?还可以编译f77代码吗? ubuntu是否已经有了fortran编译器,还是需要下载gfortran?

2 个答案:

答案 0 :(得分:19)

gfortran可以从文件扩展名中猜出某些内容;如果文件的扩展名为.f,.f90,f95,.f03或.f08,则它将采用适当标准的固定(.f)或自由格式。但你可以强制它使用选项-std = f2003编译(比方说)fortran2003代码。例如,来自documentation

  

-std=std

     

指定程序应符合的标准,可以是f95f2003f2008f2018gnu之一,或legacy std 的默认值为gnu,它指定了包含GNU Fortran支持的所有扩展的最新Fortran标准的超集,尽管将针对不建议使用的过时扩展提供警告。在新代码中使用。 legacy值是等效的,但没有过时扩展的警告,并且可能对旧的非标准程序有用。 f95f2003f2008f2018值分别指定严格符合Fortran 95,Fortran 2003,Fortran 2008和Fortran 2018标准;除相关语言标准之外的所有扩展都给出了错误,并且为后来标准中允许但过时的Fortran 77功能提供了警告。 -std=f2008ts允许Fortran 2008标准,包括增加技术规范(TS)29113,关于Fortran与C和TS 18508的进一步互操作性,以及Fortran中的其他并行特性。

请注意,除少数例外情况外,fortran标准具有很强的向后兼容性,因此很多“漂亮”,符合标准的fortran-77代码也是有效的fortran 2003代码。与此相关的主要问题是80年代及更早版本的大量代码既不“好”也不符合标准。

答案 1 :(得分:10)

是的,gfortran可以编译FORTRAN 77和Fortran 90,95等。它具有2003年和2003年的许多功能。 2008年实施。对于Fortran 90/95/2003/2008代码,使用的良好扩展名是.f90。其他一些编译器无法识别.f95,.f2003等。您是否真的想在新标准出现时重命名文件?使用.f或.for for FORTRAN 77.主要区别在于编译器期望的源布局:.f90的自由格式,.f或.for的固定格式。 (大写文件类型将导致预处理器运行。)您可以使用-ffixed-form -ffixed-line-length-none选项强制使用固定格式布局。