我是Fortran的新手,试图编译大气风模型,可在此处获取: http://nssdcftp.gsfc.nasa.gov/models/atmospheric/hwm07/
我正在使用Ubuntu 12.04和gfortan(gcc版本4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5))。
该模型包含4个扩展名为.f90的数据文件,其中3个编译得很好。最后一个给了我错误:
$ gfortran -c hwm07e.f90
hwm07e.f90:168.22:
call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u
1
Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute that requires an explicit interface for this procedure
hwm07e.f90:168.22:
call HWMupdate(input,last,gfs,gfl,gfm,gvbar,gwbar,gbz,gbm,gzwght,glev,u
1
Error: Dummy argument 'ebz' of procedure 'hwmupdate' at (1) has an attribute that requires an explicit interface for this procedure
ebz
和ebm
被定义为似乎是问题根源的目标:
subroutine HWMupdate(input,last,fs,fl,fm,vbar,wbar,ebz,ebm,zwght,lev,u,v)
use NewModel
implicit none
...
real(8),intent(inout),target :: ebz(nbf,0:p)
real(8),intent(inout),target :: ebm(nbf,0:p)
...
ebz = 0.0
ebm = 0.0
bz => ebz(:,b)
bm => ebm(:,b)
在包含的makefile.g95中,它建议使用g95作为编译器,是否有可能使用gfortran编译它?
任何建议都非常感谢!
谢谢
答案 0 :(得分:1)
由于伪参数上的HWMupdate
属性,编译器(并且您)在此正确调用target
需要显式接口。这并不意味着编译器必须拒绝代码:例如ifort
可以被说服继续,也可能g95
。
为了让你的编译继续,你可以找到一个允许这样的编译器标志:-fno-whole-file
可能是一个选项,因为这会限制gfortran
执行此检查的能力。但是,文档建议不要这样做。
如果您不反对更改代码,那么更好的解决方案是provide显式接口。