假设我的机器上已安装了一个软件包,我想知道是否需要重新生成模块包含文件(.mod
),以使它们与我编译的其余部分兼容。有没有办法做到这一点?
答案 0 :(得分:7)
如果模块是使用gfortran构建的,那么在mod文件上使用字符串(在Linux上)将提供编译器名称和版本号。但是,对于Intel,strings命令仅显示编译器版本号。
答案 1 :(得分:5)
我在某些方面遇到类似的问题,包括库和模块文件但没有来源。因为在某些情况下获取正确的编译器比获取重新编译的源代码更容易,或者只重新编译OP提到的一些内容,我发现在SO上某处获得gfortran模块的版本是很有用的。遗憾的是,这些信息并不容易找到,因此需要进行逆向工程,欢迎任何人编辑和添加更多信息。
我做了一些谷歌搜索,这是起点: 对于gfortran,根据this page,模块版本控制出现在“gfortran 4.4”。重要的是,版本号是针对模块而不是针对编译器的。我猜它会在模块文件的格式发生变化时发生变化,以解决一些新功能。
通过结合this page,this pages,this one的信息以及matthieu-verstraete的答案,我想出了这份通信清单。
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
从版本4.8
开始,当模块版本发生变化时,gfortran团队会在发行说明中包含一条小消息。该消息看起来像
模块文件:模块文件(.mod)的版本已递增
可以从this link读取。他们没有给出版本号,似乎当他们说增加时,它会增加2
。
gfortran版本8中模块版本的更新增加1,gfortran wiki在此编写时没有说明任何内容。感谢matthieu-verstraete挖掘它。
答案 2 :(得分:1)
对于最新的gfortran版本: