私は強制する必要がありますCmake私のMPIコードを構築し、MPICHとリンクする必要があります。私のMPICHはUbuntuパッケージマネージャを使って、標準の場所/usr/lib/mpich/
にインストールされています。しかし、CMakeはまだ私が使用していないOpenMPIライブラリを探しています。 CMakeに代わりにMPICHを探すように指示する方法はありますか?以下はCMakeでMPakeをビルド
、あなたはいくつかの基本的な診断の出力を確認できます。以下は
$ whereis openmpi
openmpi:
$ whereis mpich
mpich: /usr/lib/mpich /usr/include/mpich
$ mpicc -v
mpicc for MPICH version 3.2
を、私はまた、CMakeのスクリプトと私はcmakeのとmpirun.mpichから入手エラーを提供します。私のCmakeは3.5.1で、私はUbuntu Xenial 16.04で動作します。
/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent/include/usr/lib/openmpi/include/usr/lib/openmpi/include/openmpi
/usr/lib/openmpi/lib/libmpi.so
そして私は、私は次の取得バイナリを実行します:私は次の出力を得るCMakeの状態からの
cmake_minimum_required(VERSION 3.0)
message (STATUS "Adding mpiService")
find_package(MPI REQUIRED)
set(CMAKE_C_COMPILER mpicc)
set(CMAKE_CXX_COMPILER mpicxx)
set(MPI_GUESS_LIBRARY_NAME MPICH2)
message(STATUS ${MPI_INCLUDE_PATH})
message(STATUS ${MPI_C_LIBRARIES})
#add_definitions(-DOMPI_SKIP_MPICXX)
add_executable(mpiService main.cpp)
set(CMAKE_VERBOSE_MAKEFILE ON)
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
target_link_libraries(
mpiService
PRIVATE
${MPI_C_LIBRARIES}
)
[email protected]:~$ mpirun.mpich -np 2 --host node1,node2 mpiService
mpiService: error while loading shared libraries: libmpi.so.12: cannot open shared object file: No such file or directory
mpiService: error while loading shared libraries: libmpi.so.12: cannot open shared object file: No such file or directory
[MPIエラー共有ライブラリの読み込み]の可能な複製(https://stackoverflow.com/questions/14769599/mpi-error-loading-shared-libraries) – Tsyvarev
@Tsyvarevこれを調べていただきありがとうございます。以前の投稿は、標準以外のライブラリのインストールに対処するためには役に立たないでしょう:_ "libmpiとlibmpi_cxxはOpen MPIインストールの一部であり、あなたのケースでは明示的にインクルードされなければならない**非標準**の場所にありますリンカー検索パスLD_LIBRARY_PATH "_。私がCMakeを使うとき、私は標準インストールでENV変数を設定する必要はありませんでした。私は、それがmpichをサポートしていることを考えると、** CMake **がそれを処理できると期待しています。私は_probably_ソリューションは、CMakeスクリプト自体を介して来ると期待しています。 – user1221647
[FindMPI](https://cmake.org/cmake/help/v3.0/module/FindMPI.html)ページにある情報に基づいて少し試してみます。 ** MPI_C_LIBRARIES **と** MPI_INCLUDE_PATH **は推奨されていないようです。おそらく、より良いリンク方法があります。 – user1221647