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任何想法或建议?谢谢!最好,
托梅克
看起来你没有链接到正确的库.当您为MPI编译代码时(无论是Open MPI,MPICH还是任何其他实现),您需要使用MPI编译器包装器来直接编译而不是gcc.
而不是说gcc myprog.c,你需要说mpicc myprog.c.或者,与此应用程序的情况一样,更改g++ myprog.c为mpic++ myprog.c.
在幕后,MPI将调用GCC(或您告诉它使用的任何其他编译器)来进行实际编译,但它还将添加所有适当的库,编译器标志以及您需要的任何其他内容.