为OS X定制通用makefile(使用自制/gfortran/open mpi)

为OS X定制通用makefile(使用自制/gfortran/open mpi),makefile,homebrew,gfortran,openmpi,Makefile,Homebrew,Gfortran,Openmpi,我正试图编译一段名为DLPOLY(支持多核处理)的科学代码。关于如何做到这一点的在线说明似乎已经过时,makefile只包含大型计算集群的示例,而不包括家用计算机 说明如下: 通用目标模板 未知平台: $(MAKE) LD="path to FORTRAN90 Linker-loaDer" \ LDFLAGS="appropriate flags for LD (MPI libraries)" \ FC="path to FORTRAN90 compiler" \

我正试图编译一段名为DLPOLY(支持多核处理)的科学代码。关于如何做到这一点的在线说明似乎已经过时,makefile只包含大型计算集群的示例,而不包括家用计算机

说明如下:

通用目标模板

未知平台:

    $(MAKE) LD="path to FORTRAN90 Linker-loaDer" \
    LDFLAGS="appropriate flags for LD (MPI libraries)" \
    FC="path to FORTRAN90 compiler" \
    FCFLAGS="appropriate flags for FC (MPI include)" \
    EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
我已经通过自制安装了gfortran和open mpi,以及Xcode CLT。如果方便的话,我不介意使用macports等

编辑:例如,我试过这个:

但随后会出现以下错误:

所以我不知道我需要做什么。在进一步的谷歌搜索之后,我试着:


但我收到了类似的错误消息…

已经取得了进展。它开始编译时使用了这些设置,尽管我没有正确理解它们:

但最终错误在于:

mpif90-c-O2-ffast数学集_bounds.f90 设置边界。f90:36.23:

零加=最接近(0.0μwp,1.0μwp) 1.
错误:最近的下溢结果(1)

您的问题是什么?您尝试了什么?我已编辑我的问题以包含更多信息。通过在我的FFFLAGS中包含“-fno范围检查”修复了最终错误。不知道为什么这是必要的。如果有人在编译DLPOLY时发现了这一点,那么除了我在这里键入的内容之外,我所做的唯一一件事就是使用自制软件安装gfortran并将mpi打开到它们的默认位置。我还将“comms_module.f90”修改为“Include'mpif.h'”而不是“Use mpi”。您不应该使用
Include'mpif.h'
,而是按照说明使用
mpi
。非常旧的F77绑定只能用于Fortran 90之前的编译器
mpi_模块
是一个存根mpi库,提供了
DL_POLY
源代码,因此它也可以编译为串行可执行文件。谢谢,我会记住这一点。我之所以更改它,是因为我收到了“'comms_module.f90'中的'Use mpi_module'必须更改为'Use mpi'”消息,尽管我已经将该行更改为“Use mpi”,并且由于我在编译时遇到问题,我认为这可能是问题的一部分,因为自述文件提到它可能会导致问题。再次感谢你让我知道。
    LD="ld"
    LDFLAGS="-L/usr/local/lib"
    FC="gfortran"
    FCFLAGS="-I/usr/local/include/"
   'Use mpi_module' must change to 'Use mpi' in 'comms_module.f90'

   gfortran -I/usr/local/include/ kinds_f90.f90
   Undefined symbols for architecture x86_64:
     "_MAIN__", referenced from:
         _main in libgfortranbegin.a(fmain.o)
   ld: symbol(s) not found for architecture x86_64
   collect2: ld returned 1 exit status
   make[1]: *** [kinds_f90.o] Error 1
  LD="mpif90"
  LDFLAGS="-m64"
  FC="mpif90"
  FCFLAGS="-m64"
$(MAKE) FC="mpif90" LD="mpif90 -o" \
LDFLAGS="-O2 -ffast-math" \
FFLAGS="-c -O2 -ffast-math"\
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)