如何使用未知库编译未知方言的Fortran代码

如何使用未知库编译未知方言的Fortran代码,fortran,intel-fortran,Fortran,Intel Fortran,我正在尝试编译一些Fortran代码,据文档所述,这些代码是使用“英特尔Fortran编译器11”编译的。但是,当我尝试使用英特尔Fortran Composer XE 2013 for OS X附带的ifort版本(此处:)编译代码时,我遇到了一些错误。我怀疑我1)使用的编译器与使用的Fortran语言不兼容,2)没有包含一些必要的库 我不是Fortran程序员,所以我希望有更多经验的人能够浏览一下代码,认识到这仅仅是使用不同的编译器、设置一些编译器选项(包括一些特定的库)的简单问题,还是我遗

我正在尝试编译一些Fortran代码,据文档所述,这些代码是使用“英特尔Fortran编译器11”编译的。但是,当我尝试使用英特尔Fortran Composer XE 2013 for OS X附带的ifort版本(此处:)编译代码时,我遇到了一些错误。我怀疑我1)使用的编译器与使用的Fortran语言不兼容,2)没有包含一些必要的库

我不是Fortran程序员,所以我希望有更多经验的人能够浏览一下代码,认识到这仅仅是使用不同的编译器、设置一些编译器选项(包括一些特定的库)的简单问题,还是我遗漏了其他一些东西

完整的源代码可在此处的内容上方找到:

首先,我只是尝试编译/DSM2_v8_0_6_src/DSM2_v8_0/src/common中的groups.f(这需要先编译一些其他模块),但最终目标是编译DSM2_v8_0_6_src/DSM2_v8_0/src/ptm/native/fixedData.f及其所有依赖项

我使用的语法遵循以下基本模式:

ifort -c DSM2_v8_0_6_src/dsm2_v8_0/src/common/groups.f
为了了解我遇到的错误类型,这里有几种重复出现的错误类型:

groups.f(225): error #5082: Syntax error, found END-OF-STATEMENT when expecting one of: 
( * ) :: , . % + - [ : . ** / // .LT. < .LE. <= .EQ. == ...
write(unit_error,*)"Error in matching text pattern:",trim(pattern)
---------------------------------------------------------------------^

groups.f(265): error #5120: Unterminated character constant
&     "Error in pattern matching. Implementation count does not equal count in NumberMatches"
------^
groups.f(225):错误#5082:语法错误,在需要下列之一时找到语句结尾:

( * ) :: , . % + - [:*//.LT.<.LE.可以是F77或F90,具体取决于您的格式设置方式。Stack-oveflow-fomatting需要4个空格来开始代码。在第225行,它是缩进6还是完全不缩进。如果它缩进6,第265行缩进5,则它是F77

另一个问题是,在从一台机器移动到另一台机器时,前导空格是否已被剥离。如果是这种情况,则需要重新插入前导空格

在出现错误的第一行上,检查行终止。所有行都应以CR LF或just LF结尾。如果存在混合,编译器将抛出抖动


如果是F77,请尝试将扩展名为.f的文件重命名为扩展名为.for的文件。iPort肯定会将它们作为F77进行提取。

如果这可能有助于向有类似问题的人指出正确的方向,在进行一些挖掘后,我能够确定代码最初是使用Visual Studio和编译器op编译的因此,使用命令行中的ifort,我可以使用以下基本模式进行编译(为了清楚起见,省略所有包含路径等):


至于方言,我后来从提供商那里听说,代码大部分是用Fortran 77编写的,有些部分后来修改为Fortran 90。

这两个错误看起来都是行尾问题。请检查您的文件是否使用编译器期望的EOL约定(很可能是DOS,但您永远不知道…)你向代码提供商寻求帮助了吗?谢谢,我会检查EOL约定。我可能最终不得不向提供商寻求帮助,不过如果可能的话,我想自己解决,以便更快地找到答案,更彻底地理解代码。花时间下载代码..看起来像是固定格式fortran,例外t很多行只有一个制表符而不是6个空格。我不知道最好的解决办法,如果你过滤它,用空格替换制表符,可能会使几行太长。(这是大量代码,数百个文件。)谢谢乔治。我意识到我的问题有点深奥,所以我感谢你花时间下载代码并查看。你的评论让我走上了最终解决问题的正确道路。谢谢,我会尝试一下这些建议。
ifort -c -132 DSM2_v8_0_6_src/dsm2_v8_0/src/common/groups.f