我已下载了一个大型生态系统模型(Ecosystem Demography),它必须在linux中编译,并使用MPI和hdf5。我安装了mpich(在centOS 7上)用Gfortran编译器编译ED模型。但它给了我一个着名的错误
Can't find file: mpif.h
我通过&#34来查找文件;其中mpif.h"并且它什么也没有返回,所以我将PATH设置如下:
PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH
现在哪个mpif.h返回文件的路径但是当我尝试./install模型时它再次给出了同样的错误。 问题是我不知道如何设置这条路径以及模型内部的mpich路径。我是否必须设置包含文件或makefile的路径?
答案 0 :(得分:1)
如果出于某种奇怪的原因,mpif.h文件确实在
下/home/hamid/edpacks/mpich-install/bin
然后您需要将其移至
/home/hamid/edpacks/mpich-install/include
自此
PAR_INCS=-I$(MPI_PATH)/include
指向该目录,因此编译器将在该目录中查找头文件(例如mpif.h)。
(顺便说一句,增加处理器数量并不会自动降低程序速度;这取决于程序的编写方式。此外,如果您是在笔记本电脑上运行该程序,则很可能没有更多功能了。多于4核,然后增加处理器数量,即使是世界一流的MPI程序,也肯定会减慢速度。)
答案 1 :(得分:0)
您无法使用.h
搜索which
文件,因为该文件仅查找可执行文件(“其中-显示(外壳)命令的完整路径”)。您必须使用其他命令,例如find
,locate
或仅使用桌面搜索。
文件应位于某个地方的include
目录中。当使用正确的MPI编译器包装(mpif90
,mpifort
或类似的文件)编译Fortran程序时,应自动包含该库。如果不是,则可以使用-Idirectory_name
编译器标记来手动添加它。
如George所示,如果Makefile在某些环境变量中包含目录,则只需将目录名添加到该环境变量中即可。