MPI未定义的对象引用

时间:2013-01-24 06:53:20

标签: c++ c fortran mpi fortran90

我正在尝试安装使用MPI的程序(Parallel Ice Sheet Model,或PISM)。我一直遇到错误

libpismutil.so: undefined reference to `ompi_mpi_cxx_op_intercept'
libpismutil.so: undefined reference to `MPI::Datatype::Free()'
libpismutil.so: undefined reference to `MPI::Comm::Comm()'
libpismutil.so: undefined reference to `MPI::Win::Free()'
链接CXX可执行文件时

。我有点难过为什么会这样;找到所有MPI可执行文件和库所在程序的配置。

在另一个帖子中,有人建议这是由于使用Fortran或C构建MPI时的不同命名约定,但看到我mpicc.mpich2中有mpif90.mpich2/usr/bin我认为这不会是一个问题。

1 个答案:

答案 0 :(得分:2)

经过多次惊愕,我找到了罪魁祸首。我正在尝试安装的程序使用一个名为PETSc的科学计算库; PETSc的标准安装不会生成PISM所需的共享对象文件,您必须明确告诉它制作它们。完成后,PISM安装正确。

当然,由于openmpi的其他一些模糊错误,我无法运行它,但这是另一个线程的故事。