致命错误:mpi.h:没有这样的文件或目录#include <mpi.h> </mpi.h>

时间:2014-11-13 23:00:44

标签: c++ c mpi openmpi

当我仅使用

编译脚本时
#include <mpi.h>

它告诉我没有这样的文件或目录。 但是当我将mpi.h的路径包括在内时

#include "/usr/include/mpi/mpi.h"

(路径正确)它返回:

In file included from /usr/include/mpi/mpi.h:2087:0,
                 from lbm.cc:7:
/usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory
 #include "mpi.h"
                 ^
compilation terminated.

任何人都知道如何解决这个问题?

8 个答案:

答案 0 :(得分:30)

问题几乎可以肯定是你没有使用MPI编译器包装器。无论何时编译MPI程序,都应该使用MPI包装器:

  • C - mpicc
  • C ++ - mpiCCmpicxxmpic++
  • FORTRAN - mpifortmpif77mpif90

这些包装器为您确保在编译程序时确保包含所有适当的编译器标志,库,包含目录,库目录等,从而完成所有脏工作。

答案 1 :(得分:7)

在我的系统上,我只是错过了Linux软件包。

sudo apt install libopenmpi-dev
pip install mpi4py

(使用它的一些例子,这是一个很好的即时测试,看它是否成功)

Succeded。

答案 2 :(得分:3)

Debian似乎包含以下内容:

  • mpiCC.openmpi
  • MPIC ++。的openmpi
  • mpicc.openmpi
  • mpicxx.openmpi
  • mpif77.openmpi
  • mpif90.openmpi

我将为mpic等测试每个的符号链接,看看是否有助于启用HDF5-openmpi等找到mpi.h。

拿回来Debian包含通过他们的替代系统的符号链接,它仍然找不到HDF5 openmpi包和H5public.h头中引用的mpi.h之间的正确路径。

答案 3 :(得分:3)

如上所述,包含

/usr/lib/openmpi/include 
包含路径中的

负责处理(在我的情况下)

答案 4 :(得分:1)

在 Ubuntu 18.04 上我必须安装:

sudo apt install lam4-dev

答案 5 :(得分:0)

您可以执行:

$ mpicc -showme 

结果:

gcc -I/Users/<USER_NAME>/openmpi-2.0.1/include -L/Users/<USER_NAME>/openmpi-2.0.1/lib -lmp

此命令显示编译mpicc

所需的库

示例:

$ mpicc -g  -I/Users/<USER_NAME>/openmpi-2.0.1/include -o [nameExec] [objetcs.o...] [program.c] -lm


$ mpicc -g  -I/Users/<USER_NAME>/openmpi-2.0.1/include -o example file_object.o my_program.c otherlib.o -lm

此命令在您的程序中生成可执行文件,您可以执行:

$ ./example

答案 6 :(得分:0)

在我的系统Ubuntu 16.04上。我安装了:

sudo apt install libopenmpi-dev

在我使用mpiCC进行编译并且可以正常工作之后

答案 7 :(得分:0)

在Fedora上:

dnf install openmpi-devel