Ошибка компиляции MPI, неопределенная ссылка на `MPI :: Win :: Free () - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь скомпилировать код, написанный в основном на Fortran с некоторыми частями в C, использую некоторые библиотеки, такие как HDF5 и MPI, и, вероятно, написан с использованием openmpi 3.2.1, но у меня openmpi 4.0.3 установлен на ubuntu 20.04. Теперь, когда код работает с MPICH.

при компиляции я получил такие ошибки, как:

h5pfc -g -lstdc++ -pthread -L/usr/local/include/cantera -lcantera    -L/usr/local/include/cantera -lcantera_fortran -lcantera    -lpthread -lstdc++ ../bin/*.o -o ../bin/amr3d  
/usr/bin/ld: ../bin/distance_to_wall.o: in function `MPI::Intracomm::Intracomm()':
/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/ompi/mpi/cxx/intracomm.h:25: undefined reference to `MPI::Comm::Comm()'
/usr/bin/ld: ../bin/distance_to_wall.o: in function `MPI::Intracomm::Intracomm(ompi_communicator_t*)':
/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/ompi/mpi/cxx/intracomm_inln.h:23: undefined reference to `MPI::Comm::Comm()'
/usr/bin/ld: ../bin/distance_to_wall.o: in function `MPI::Op::Init(void (*)(void const*, void*, int, MPI::Datatype const&), bool)':
/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/ompi/mpi/cxx/op_inln.h:121: undefined reference to `ompi_mpi_cxx_op_intercept'
/usr/bin/ld: ../bin/distance_to_wall.o:(.data.rel.ro._ZTVN3MPI3WinE[_ZTVN3MPI3WinE]+0x48): undefined reference to `MPI::Win::Free()'
/usr/bin/ld: ../bin/distance_to_wall.o:(.data.rel.ro._ZTVN3MPI8DatatypeE[_ZTVN3MPI8DatatypeE]+0x78): undefined reference to `MPI::Datatype::Free()'
collect2: error: ld returned 1 exit status
make: *** [Makefile:326: amr3d] Error 1

Что я могу сделать, чтобы скомпилировать этот код?

...