[EPOCH] windows 配置epoch fortran失败
epoch是一款高能凝聚态物理领域计算算法,因为一些原因用不了服务器,我就想看看在自己的Windows上能不能装。
过程是这样的:一开始首先要下载fortran编译器,用的是gnu的gfortran。其中在mingw里还要把msys组件里的basic的那个勾选了,因为等下make要用到。做完这两步之后,实际上还有些工作没完成,但我直接就cd到epoch的源码里准备make了。然而结果就是显示找不到mpi,因为mpi是epoch依赖的库,因此第二步其实是要下mpi。我开始在官网下了mpich的源码,不知道怎么在Windows下配置,再接着发现官网也有windows安装版本,但是装完以后,mpif90这条命令用不了。于是又看到另一个方法,就是在msys用p安装msmpi,这大概是微软的mpi版本,但貌似要用msys2才能下载到,命令是pacman -S mingw-w64-x86_64-msmpi
。完成这一步之后,还要用gfortran include/mpi.f90 -c -fno-range-check -fallow-invalid-boz
来creating “mpi.mod” for Fortran use,但再这一步里fallow
这个命令我始终显示unrecognized,于是只好把最后一段省略,这才执行了这条命令。但问题是,这样做了以后,即使mpif90已经可以在命令行运行,但在msys2里却是不能识别的命令,同样还有-fallow 选项也无法识别,当再在epoch里make的时候,上面提到的两个命令都无法执行,因此又报了同样的错误。如图1
其实在上面,连gfrotran也无法识别。这时用的是mysy2的shell,而这里面访问不了本地的软件,即使已经加入环境变量。在更换到mingw64后,gfortran是可以用了。但此时make还是会报错,不过报错稍微有点不同,报的是找不到moi.mod这个错。这个错很可能是在执行gfortran include/mpi.f90 -c -fno-range-check -fallow-invalid-boz
时把最后一句去掉了。于是加上最后一句执行,成功(虽然有很多warning)。然后再回来执行make,发现开始编译了一长串的东西。稍等片刻后....还是报错了。
这次报错是因为“symbol has no Implicit type",我查了一下,说是fortran有implicit type,就是如果命名为某些特定名字的字母开头就成了特定的类型,例如 I, J, K, L, M, N这些字母开头的变量隐式地已经是INTEGER类型了。
于是我就跑到出错的那个F90文件里修改了这两个报错的变量的类型。make。
又得到了另外的错误。其中第一个错误说IMPLICIT NONE 不能和其他声明一起用。看到这里我已经晕了,更别提剩下两个又是新的问题。