编译期间的openmpi错误

时间:2013-07-09 12:42:22

标签: 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 function Intracomm':

         

/home/users/didymos/openmpi-1.6.3/include/openmpi/ompi/mpi/cxx/intracomm_inln.h:23:     未明确引用MPI::Comm::Comm()' restraint_camshift2.o: In function 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:/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 任何想法或建议? 谢谢! 最好,

托梅克

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

用户在这里发布了同样的问题:

http://www.open-mpi.org/community/lists/users/2013/07/22296.php

邮件列表上发布的解决方案是:使用mpiCC(或mpic ++),而不是mpicc。