大家好,我正在将我的代码从运行在ubuntu上的集群部署到具有相同硬件的集群上,但是看起来更老了gfortran编译器。源实际上是由ifort编译的,但由于它没有安装在红色群集上,我可能不得不切换到gfortran。
现在的问题是代码无法编译。在我可以在我的代码部分修复的类型中有“可分配”这个东西,但是其他人也有其他贡献,而不是准备好将他们的代码调整到旧标准。
我的问题:
感谢您的建议和欢呼
答案 0 :(得分:1)
我认为你有3个选择:
其中我认为(1)可能很难;如果它是那么我会去(3)。如果那是不可能的,那么它必须是(2) - 我没有看到任何其他选项。
现在回答你的问题:
答案 1 :(得分:1)
gfortran从4.0版开始。版本4.1和4.2是旧的,缺少许多功能,可能有错误。您可能会遇到代码使用的其他缺失功能。我建议,如果可能的话,将编译器升级到当前的稳定版本,即4.5。
支持所有版本的gfortran会对您的代码造成许多限制。最好找出最有效的版本,并将该信息添加到文档中。对于我的代码,由于我大量使用了ISO C绑定,因此该版本为4.3。
gfortran wiki http://gcc.gnu.org/wiki/GFortran有一个版本更新日志,可以帮助您确定所需的版本。唯一可靠的方法是测试。
如果要强制实施版本要求,可以在Fortran中进行测试。您可以在make过程中运行一个小测试程序,如果gfortran版本太早,则可以中止。
以下代码片段显示了从Fortran程序输出gfortran版本号的两种方法。将文件类型命名为“.F90”,以便gfortran调用预处理器。
#ifdef __GFORTRAN__
write (*, '( "gfortran" )' )
write (*, '( I0, ".", I0 )' ) __GNUC__, __GNUC_MINOR__
! Merged version number:
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
write (*, '( I0 )' ) GCC_VERSION
#endif