致命错误:mpi.h:没有这样的文件或目录 #include < mpi.h>
fatal error: mpi.h: No such file or directory #include <mpi.h>
当我编译我的脚本时
#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.
有人知道如何解决这个问题吗?
问题几乎可以肯定是你没有使用MPI编译器包装器。每当编译 MPI 程序时,都应使用 MPI 包装器:
- C -
mpicc
- C++ -
mpiCC
、mpicxx
、mpic++
- 福特兰 -
mpifort
,mpif77
,mpif90
这些包装器为您完成所有繁琐的工作,以确保在编译程序时包含所有适当的编译器标志、库、包含目录、库目录等。
在我的系统上,我只是缺少Linux软件包。
sudo apt install libopenmpi-dev
pip install mpi4py
(使用它的东西的例子是一个很好的即时测试,看看它是否成功)
成功了。
您可以执行:
$ 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
在我的系统上 Ubuntu 16.04。我安装了:
sudo apt install libopenmpi-dev
在我使用 mpiCC 编译并且它可以工作
如上所述,包含
/usr/lib/openmpi/include
在包含路径中处理这个问题(在我的情况下)
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 之间找到正确的路径。
在 Ubuntu 18.04 上,我必须安装:
sudo apt install lam4-dev
在 Fedora 上:
dnf install openmpi-devel
在 Ubuntu 20.04 上,这对我有用:
apt -y install lam-runtime
在 Mac 12.2 上,我安装了 brew install openmpi
.头文件位于 /opt/homebrew/Cellar/open-mpi/x.x.x/include
下。
一旦安装了 MPI:
$ sudo apt install mpich
查看库的安装位置,每种情况都不同:
$ mpicc -show
就我而言:(Ubuntu 20.0)
并添加...
#include </usr/lib/x86_64-linux-gnu/openmpi/include/openmpi>
:-)
- 既然存在危险,为什么项目要使用-I include开关
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何将更多文件夹添加到c++include路径
- 什么是"#include <boost/functional/hash.hpp> "?
- 用MacOS Mojave编译C++:致命错误:mpi.h:没有这样的文件或目录
- MPI突然停止了对多个核心的操作
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 设置 Visual Studio for MPI: 找不到标识符错误
- C++包含来自 #include "DevEngine/Core.h" 的错误
- <filesystem> 在 clang 6 和 10 上 #include 错误
- 在 void 函数中使用 #include 变量C++
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何使用 MPI 的远程内存访问 (RMA) 功能并行化数据聚合?
- 重载 MPI 中的运算符 ()
- N-API include an .so or dll
- 允许哪些令牌作为 #include 的参数?
- MPI:检查是否有任何进程已终止
- GCC 包含标头(使用"-include")CMake 未检测到的更改
- WebAssembly include OpenCV
- 致命错误:mpi.h:没有这样的文件或目录 #include < mpi.h>