致命错误:mpi.h:没有这样的文件或目录#include
当我只编译脚本时
#include
它告诉我没有这样的文件或目录。 但是当我包含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++
- FORTRAN –
mpifort
,mpif77
,mpif90
这些包装器为您完成所有脏工作,确保在编译程序时包含所有适当的编译器标志,库,包含目录,库目录等。
在我的系统上,我只是错过了Linux软件包。
sudo apt install libopenmpi-dev pip install mpi4py
(使用它的一些例子,这是一个很好的即时测试,看看它是否成功)
Succeded。
如上所述,包含
/usr/lib/openmpi/include
在include路径中处理这个问题(在我的例子中)
Debian似乎包括以下内容:
- mpiCC.openmpi
- MPIC ++。了openmpi
- mpicc.openmpi
- mpicxx.openmpi
- mpif77.openmpi
- mpif90.openmpi
我将为mpic等测试每个的符号链接,看看是否有助于启用HDF5-openmpi等function查找mpi.h.
拿回来Debian包含通过他们的替代系统的符号链接,它仍然找不到HDF5 openmpi包和H5public.h头中引用的mpi.h之间的正确路径。
你可以执行:
$ mpicc -showme
结果:
gcc -I/Users//openmpi-2.0.1/include -L/Users/ /openmpi-2.0.1/lib -lmp
此命令显示编译mpicc所需的库
例:
$ mpicc -g -I/Users//openmpi-2.0.1/include -o [nameExec] [objetcs.o...] [program.c] -lm $ mpicc -g -I/Users/ /openmpi-2.0.1/include -o example file_object.o my_program.c otherlib.o -lm
此命令在您的程序中生成可执行文件,您可以执行:
$ ./example