首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到mpif.h编译错误?

找不到mpif.h编译错误?
EN

Stack Overflow用户
提问于 2014-11-05 09:16:17
回答 2查看 11.2K关注 0票数 2

我下载了一个大型生态系统模型(生态系统人口统计),它必须在linux中编译,它使用了MPI和hdf5。我已经安装了mpich (在centOS 7上),以便使用Gfortran编译器编译ED模型。但它给了我一个著名的错误

代码语言:javascript
复制
Can't find file: mpif.h

我通过“哪个mpif.h”查找文件,它没有返回任何内容,所以我将路径设置如下:

代码语言:javascript
复制
PATH=/home/hamid/edpacks/mpich-install/bin:$PATH
export PATH

现在,mpif.h返回文件的路径,但是当我再次尝试./install模型时,它给出了相同的错误。问题是我不知道如何设置这个路径,以及从模型内部到mpich的路径。是否必须从包含文件或makefile设置路径?

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 00:05:27

如果出于某种奇怪的原因,mpif.h文件确实位于

代码语言:javascript
复制
/home/hamid/edpacks/mpich-install/bin

然后,您需要将其移动到

代码语言:javascript
复制
/home/hamid/edpacks/mpich-install/include

因为这是

代码语言:javascript
复制
PAR_INCS=-I$(MPI_PATH)/include 

指向该目录,因此编译器将在该目录中查找头文件(例如mpif.h)。

(顺便说一句,增加处理器的数量并不会自动降低程序的速度;它取决于程序的编写方式。此外,如果您在笔记本电脑上运行此程序,而笔记本电脑最有可能不超过4个内核,那么增加超过4个内核的处理器数量肯定会减慢甚至是hello-world MPI程序的速度。)

票数 1
EN

Stack Overflow用户

发布于 2019-03-17 18:34:34

您不能使用which搜索外壳文件,因为它只查找可执行文件(“that --显示( .h )命令的完整路径”)。您必须使用其他命令,如findlocate或仅使用桌面搜索。

文件应该在某个include目录中。当用正确的MPI编译器包装器(mpif90mpifort或类似的)编译Fortran程序时,库应该自动包含在内。如果不是,您可以使用-Idirectory_name编译器标志来手动包含它。

如果您的Makefile在某个环境变量中包含目录,如George所示,您只需将目录名添加到该环境变量即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26748141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档