是否可以确定哪个Fortran编译器生成了".mod"文件?

Ami*_*mir 6 fortran module compilation

假设我的机器上已经安装了一个软件包,我想知道是否需要重新生成模块include files(.mod)以使它们与我的其余编译兼容.有没有办法做到这一点?

小智 7

如果模块是使用gfortran构建的,那么在mod文件上使用字符串(在Linux上)将提供编译器名称和版本号.但是,对于Intel,strings命令仅显示编译器版本号.


inn*_*SPG 6

我在某些方面遇到了类似的问题,包括库和模块文件但没有来源.因为在某些情况下获取正确的编译器比获取重新编译的源代码更容易,或者只重新编译OP提到的一些内容,我发现在SO上某处获得gfortran模块的版本是很有用的.遗憾的是,这些信息并不容易找到,因此需要进行逆向工程,欢迎任何人编辑和添加更多信息.

我做了一些谷歌搜索,这里是起点:对于gfortran,模块版本控制出现在"gfortran 4.4"根据此页面.重要的是,版本号是针对模块而不是针对编译器的.我想当模块文件的格式改变为一些新功能时,它会发生变化.

通过从合并信息这个页面,这个页面这一次,我想出了对应的列表中.

GCC version    module file version
-----------------------------------
up to 4.3.2    unversioned
4.4            0
4.5.1          4
4.6.3          6
4.7.0pre       8
4.7.1          9
4.8.[1-3]      10
4.9.2          12
5.1.0          14
8.1.0          15 
Run Code Online (Sandbox Code Playgroud)

从版本4.8开始,当模块版本发生变化时,gfortran团队在发行说明中包含一条小消息.消息看起来像

模块文件:模块文件(.mod)的版本已递增

因为它可以从这个链接中读取.他们没有给出版本号,似乎当他们说增加时,它会增加2.