我从来没有在VS08之外做过任何主要的编程。
我正试图用两个相关的make文件中的任何一个来编译一个名为LAMMPS的程序。一个调用g++,另一个调用icc (Intel的编译器)。
icc产生如下错误:
icc -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M write_restart.cpp> write_restart.dWrite_restart.cpp(15):灾难性错误:无法打开mpi.h文件# include"mpi.h"
和g++抛出这个错误
g++ -g -O -DLAMMPS_GZIP -DMPICH_SKIP_MPICXX -DFFT_FFTW -M verlet.cpp> verlet.dmpi.h:没有这样的文件或目录编译终止。
mpi.h文件位于/usr/lib/openmpi/include
这是我的理解,我需要设置$PATH变量,读取
bash:/usr/local/sbin:/usr/地方/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin:/opt/英特尔/bin:/usr/lib/openmpi包括:
和当前读取
的$LD_LIBRARY_PATH那么,如何包含mpi.h文件呢?那么icc或g++找到它吗?/usr/lib/openmpi/lib:
MPI .h是MPI库的头文件。如果您在makefile中使用mp++ MPI编译器包装器而不是g++,则会包含此功能。mp++将调用适当的编译器。根据你的描述你已经在你的ubuntu机器上安装了openmpi包。
要了解更多信息,请查阅手册,例如
http://lammps.sandia.gov/doc/Section_start.html#2_2 (for LAMMPS)
,也许您需要查看openmpi手册,了解如何设置额外的编译器。不确定在openmpi本身构建之后是否可以做到这一点。默认情况下,我认为Ubuntu的openmpi编译器包装器只会调用g++。CMIIW .
好了,所以当将cc设置为"mpic++ "时,我让它与g++一起工作。Mpich2 "代替" mppic++ "
您可以尝试使用openmpi编译/src/make文件使openmpi
在我的例子中,这个选项是成功的