在ubuntu 18.04的gfortran中编译旧的fortran代码

时间:2019-01-12 17:07:30

标签: fortran gfortran fortran77

我是Fortran的新手,我想编译一个写于1988年的代码http://www.seg.ethz.ch/software/velest.html。  我使用了以下命令:

f77 -o velest velest.f

并显示此错误

velest.f:10165:45:

      write(ifil,'(''North  rotate= '',f6.1,)') rotate
                                         1
Error: Unexpected element ‘)’ in format string at (1)
velest.f:4384:25:

   call RAYPATH(1,1,1,1.,1.,1.,1.,nl,thk,h,v,vsq,
                     1
Warning: Rank mismatch in argument ‘x’ at (1) (rank-1 and scalar) [-Wargument-mismatch]

然后,我在代码中找到第一个错误的位置,并删除了“ f6.1”的“,”。这次再次编译后,出现了这些错误:

velest.f:4384:25:

   call RAYPATH(1,1,1,1.,1.,1.,1.,nl,thk,h,v,vsq,
                     1
Warning: Rank mismatch in argument ‘x’ at (1) (rank-1 and scalar) `[-Wargument-mismatch]`
/tmp/ccQk4MAf.o: In function `datetime_':
velest.f:(.text+0x310c): undefined reference to `time_'
velest.f:(.text+0x3120): undefined reference to `ctime_'
velest.f:(.text+0x3149): undefined reference to `sprintf_'
/tmp/ccQk4MAf.o: In function `cputimer_':
velest.f:(.text+0x3abf): undefined reference to `clock_'
collect2: error: ld returned 1 exit status

为解决该问题,我遵循了本网站的说明http://nota.tw/2011/04/21/adjust-velest-in-ubuntu/ 但是这次编译之后,出现了这个错误:

velest.f:4384:25:

   call RAYPATH(1,1,1,1.,1.,1.,1.,nl,thk,h,v,vsq,
                     1
Warning: Rank mismatch in argument ‘x’ at (1) (rank-1 and scalar) [-Wargument-mismatch]
/tmp/cc7WrZmF.o: In function `datetime_':
velest.f:(.text+0x3119): undefined reference to `ctime_'
collect2: error: ld returned 1 exit status

如果有人可以回答我的问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

格式字符串无效。 f6.1,)中出现一个逗号。因此,gfortran期望另一个编辑描述符而不是右括号。如果删除该错误的逗号,则代码将编译。请注意,这可能是gfortran中的错误,因此您可能想与gfortran开发人员进行互动。