编译期间的openmpi错误

did*_*mos 3 compilation mpi openmpi

我正在尝试本地编译使用openmpi(1.6.3)的软件,但是我收到了这个错误:

restraint_camshift2.o :(.toc + 0x98):未定义的引用`ompi_mpi_cxx_op_intercept'

restraint_camshift2.o:在函数`Intracomm'中:

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm.h:25:未定义的引用`MPI :: Comm :: Comm()'

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm.h:25:对MPI::Comm::Comm()' restraint_camshift2.o: In functionIntracomm的未定义引用':

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm_inln.h:23:对MPI::Comm::Comm()' restraint_camshift2.o: In functionIntracomm的未定义引用':

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm.h:25:未定义的引用`MPI :: Comm :: Comm()'

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm.h:25:未定义的引用`MPI :: Comm :: Comm()'

restraint_camshift2.o:/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm.h:25:对MPI :: Comm :: Comm()的更多未定义引用遵循restraint_camshift2的.o :( data.rel.ro._ZTVN3MPI3WinE [_ZTVN3MPI3WinE] + 0x48):

未定义引用`MPI :: Win :: Free()'restraint_camshift2.o :(.data.rel.ro._ZTVN3MPI8DatatypeE [_ZTVN3MPI8DatatypeE] + 0x78):

未定义的引用`MPI :: Datatype :: Free()'collect2:error:ld

返回1退出状态make [3]:* [mdrun]错误1 make [3]:离开

目录`/home/users/didymos/src/gromacs-4.5.5/src/kernel'make [2]:* [all-recursive]错误1

make [2]:离开目录`/home/users/didymos/src/gromacs-4.5.5/src'

make [1]:* [all]错误2

make [1]:离开目录`/home/users/didymos/src/gromacs-4.5.5/src'

make:* [all-recursive]错误1

我正在使用gcc 4.7.3任何想法或建议?谢谢!最好,

托梅克

Wes*_*and 7

看起来你没有链接到正确的库.当您为MPI编译代码时(无论是Open MPI,MPICH还是任何其他实现),您需要使用MPI编译器包装器来直接编译而不是gcc.

而不是说gcc myprog.c,你需要说mpicc myprog.c.或者,与此应用程序的情况一样,更改g++ myprog.cmpic++ myprog.c.

在幕后,MPI将调用GCC(或您告诉它使用的任何其他编译器)来进行实际编译,但它还将添加所有适当的库,编译器标志以及您需要的任何其他内容.

  • 实际上我把mpicc更改为mpic ++,现在它可以工作了,谢谢. (2认同)