Я пытаюсь установить программу (Parallel Ice Sheet Model, или PISM), которая использует MPI. Я продолжаю сталкиваться с ошибками
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.
В другом потоке кто-то предположил, что это связано с различными соглашениями об именах, когда MPI создается с Fortran или C, но, видя, у меня есть оба mpicc.mpich2
а также mpif90.mpich2
в моем /usr/bin
Я думаю, это не будет проблемой.
После долгих потрясений я нашел виновника. Программа, которую я пытаюсь установить, использует библиотеку для научных вычислений под названием PETSc; стандартная установка PETSc не генерирует совместно используемые объектные файлы, необходимые для PISM, вы должны явно указать это для их создания. Как только это было сделано, PISM установлен правильно.
Конечно, я не смог запустить его из-за какой-то неясной ошибки с openmpi, но это история для другого потока.
Других решений пока нет …