0
我試圖安裝使用MPI的程序(並行冰原模型或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不同的命名慣例,但看到我在我的/usr/bin
都mpicc.mpich2
和mpif90.mpich2
我認爲這不會是一個問題。
你說的有點奇怪,因爲ompi_mpi_cxx_op_intercept看起來像是一個openmpi的內部例程,但是mpicc.mpich2表明你正在使用mpich2。你能否澄清你如何編譯和鏈接,以及如何構建libpismutil.so?其次是http://www.cs.utah.edu/formal_verification/ISP-Eclipse/help/troubleshooting.html有關嗎?最後你知道MPI C++綁定已經從MPI標準中刪除了嗎? –
@IanBush,雖然技術上從MPI-3標準中刪除,但實現者可以自由地繼續支持C++綁定,並且大多數供應商肯定會這樣做,因爲使用C++ MPI API的並行代碼量很大(此問題演示了點)。當然,這意味着新的MPI-3功能不會將其引入到現有的C++包裝中,至少不是以標準定義的方式。 –
@HristoIliev - 是的,我意識到這一點。更確切地說,如果OP在擴展PISM時確保OP知道這一點 - 根據已棄用或已刪除的標準編寫新代碼或標準功能不是最佳方案。 –