2015-12-09 38 views
0

我的电脑上有一个代码,使用Petsc,这取决于mpi。在我的电脑上效果很好。我把它放在群集上,导出路径为gccPetscopenmpi(虽然我在我的电脑上使用mpich,我希望openmpi也可以)到LD_LIBRARY_PATHPATH。我也改变了makefile中的路径。 Petsc,gcc,openmpi都可以在群集中使用,所以我没有配置任何东西。当我做make,编译器给了错误:mpi.h的位置

fatal error: mpi.h: No such file or directory

我知道我没有给完整的信息,但如果需要,我可以告诉更多。如何使Petsc知道mpi.h在哪里?

回答

0

通常,您应该使用mpicc(或用于C++的mpicxx)编译而不是gcc(或用于C++的g++)。这些命令是围绕gccg++的简单包装,只需在相应的-I/path/to/mpi/includes-L/path/to/mpi/libs中自动添加并且应该包含在您的openmpi安装中。如果没有这个,只需在命令中加上-I/path/to/mpi/includes即可编译相应的文件。这告诉编译器在哪里查找适当的头文件。

+0

我的代码是用C++编写的,petsc用c编写的。如果我只使用mpicxx,会有问题吗? – Shibli

+0

你目前正在编译petsc(我以前从未使用过)?如果您使用g ++编译petsc,请使用mpicxx;行为将是相同的。如果您使用gcc编译petsc,请使用mpicc。 –