「minicondaにCMakeの検索パスを持ってかれる」の版間の差分

提供: Eospedia
移動: 案内検索
(FFTWがー)
(CMakeのパラメータ)
 
(同じ利用者による、間の5版が非表示)
行153: 行153:
  
 
めっちゃ[[RELIONビルド時のエラー1|エラー]]出た。
 
めっちゃ[[RELIONビルド時のエラー1|エラー]]出た。
 +
 +
TIFFという字にまみれているのでlibtiffのリンクが失敗している様。
 +
 +
=== TIFFがー ===
 +
CMake GUIに戻るとなぜかTIFF_INCLUDE_DIRとTIFF_LIBRARY_RELEASEが/usr/lib/openmpi/lib/libmpi_cxx.soになっていた。<b>もはやTIFFですらない。</b>自分で打ち間違えたのか?
 +
 +
それぞれ/usr/include/x86_64-linux-gnu と /usr/lib/x86_64-linux-gnu/libtiff.so.5 にして、再ビルド。
 +
 +
$ make -j 12
 +
$ make install
 +
 +
やっと通った。
 +
 +
=== CMakeのパラメータ ===
 +
一応、CMakeCache.txtの内容は[[RELIONビルド時のCMakeCache.txt|こちら]]。

2019年5月15日 (水) 05:44時点における最新版

現象

  • EMAN2をminicondaでソースからビルドした環境でRELIONをビルドしようとしたら、以下のようにminicondaにCMakeの検索パス?を持ってかれる現象が発生し、RELIONをビルドできない状況に陥った。
  • 事象が発生したままに書き留めているので整理できていないが、以下に対処ログ残す。
# relionのルートディレクトリに移動 (cmakeとかsrcとかあるディレクトリ)

$ rm -r build/ install/

$ sudo apt install libtiff5-dev

$ mkdir build/ install/

$ cd build && cmake -DCMAKE_INSTALL_PREFIX=../install ..

(出力の一部抜粋)

CMake Warning at src/apps/CMakeLists.txt:165 (add_executable):
 Cannot generate a safe runtime search path for target tiltpair_plot because
 files in some directories may conflict with libraries in implicit
 directories:

   runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3f.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib

 Some of these libraries may not be found correctly.

対処法調査

$ which cmake
/home/kttn/miniconda2/bin/cmake

EMAN2インストールするときに入れたminiconda2のbin/に、condaで入れたcmakeが入ってて、それ使ってるのが問題か

cmakeを/usr/bin/cmakeに置き換えて再ビルド

$ /usr/bin/cmake -DCMAKE_INSTALL_PREFIX=../install ..

(出力の一部抜粋)

CMake Warning at src/apps/CMakeLists.txt:165 (add_executable):
 Cannot generate a safe runtime search path for target maingui because files
 in some directories may conflict with libraries in implicit directories:

   runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3f.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib

 Some of these libraries may not be found correctly.

んぁー cmakeわからん


relion.gitのreadmeに" If you installed libtiff in a non-standard location, specify the location by -DTIFF_INCLUDE_DIR=/path/to/include -DTIFF_LIBRARY=/path/to/libtiff.so.5."なる記述があったので、これを使ってみる


$ cmake -DCMAKE_INSTALL_PREFIX=../install -DTIFF_INCLUDE_DIR=/usr/include/x86_64-linux-gnu -DTIFF_LIBRARY=/usr/lib/x86_64-linux-gnu/libtiff.so.5 ..

(出力の一部抜粋)

CMake Error at /home/kttn/softwares/relion/build/CMakeFiles/CMakeTmp/cmTC_3d3bbTargets.cmake:16 (add_library):
 Target "MPI::MPI_C" links to item " -Wl,-rpath,/home/kttn/miniconda2/lib
 -Wl,-rpath -Wl,/home/kttn/miniconda2/lib -Wl,--enable-new-dtags" which has
 leading or trailing whitespace.  This is now an error according to policy
 CMP0004.
Call Stack (most recent call first):
 /home/kttn/softwares/relion/build/CMakeFiles/CMakeTmp/CMakeLists.txt:12 (include)

libtiffは解消されたけど他のライブラリが相変わらずminicondaに持ってかれている

$ conda remove cmake
$ cmake -DCMAKE_INSTALL_PREFIX=../install ..

(一部抜粋)

CMake Warning at src/apps/CMakeLists.txt:165 (add_executable):
 Cannot generate a safe runtime search path for target tiltpair_plot because
 files in some directories may conflict with libraries in implicit
 directories:

   runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3f.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib
   runtime library [libfftw3.so.3] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
     /home/kttn/miniconda2/lib

 Some of these libraries may not be found correctly.


minicondaの呪縛からどうやって逃れたらいいの?


  • 色々試す
    • miniconda2をPATHから削除してcmakeする
      • (結果)相変わらずminiconda2に持ってかれたまま

CMakeはインクルードとライブラリを検索するとき、どの設定ファイルまたは環境変数を呼んでどこを探しに行っているのか、それを変更するにはどうしたら良いのかがわからないと対処できない。

とりあえずの対処

CMake GUIでインクルードパスとライブラリパスを頑張って手打ちする。 CMakeはv3.5.1を使用。

FFTWがー

CMake GUIにせっせとパスを打ち込んだが、なぜかFFTW_INCLUDESとFFTW_PATHだけ、わざわざ/usr/includeと入力しても、Configureしたら勝手に/home/kttn/miniconda2/includeに書き換わってしまう。どういう理屈でそうなってんだか全くわからん。

それぞれincludeの中身を比較してみる

$ ls /usr/include/*fftw*
/usr/include/fftw.h     /usr/include/fftw3.h     /usr/include/fftw_mpi.h      /usr/include/rfftw_mpi.h
/usr/include/fftw3.f    /usr/include/fftw3l.f03  /usr/include/fftw_threads.h  /usr/include/rfftw_threads.h
/usr/include/fftw3.f03  /usr/include/fftw3q.f03  /usr/include/rfftw.h
$ ls /home/kttn/miniconda2/include/*fftw*
/home/kttn/miniconda2/include/fftw3-mpi.f03  /home/kttn/miniconda2/include/fftw3.h
/home/kttn/miniconda2/include/fftw3-mpi.h    /home/kttn/miniconda2/include/fftw3l-mpi.f03
/home/kttn/miniconda2/include/fftw3.f        /home/kttn/miniconda2/include/fftw3l.f03
/home/kttn/miniconda2/include/fftw3.f03      /home/kttn/miniconda2/include/fftw3q.f03


/usr/includeの方、fftw3_mpiのファイルが少ない。ファイルが見つからないから/usr/includeがスルーされた?aptで関係しそうなパッケージを入れてみる。

$ sudo apt install libfftw3-mpi-dev

$ ls /usr/include/*fftw*
/usr/include/fftw.h         /usr/include/fftw3.h         /usr/include/fftw_threads.h
/usr/include/fftw3-mpi.f03  /usr/include/fftw3l-mpi.f03  /usr/include/rfftw.h
/usr/include/fftw3-mpi.h    /usr/include/fftw3l.f03      /usr/include/rfftw_mpi.h
/usr/include/fftw3.f        /usr/include/fftw3q.f03      /usr/include/rfftw_threads.h
/usr/include/fftw3.f03      /usr/include/fftw_mpi.h

上記の上で再度configureしてもダメ。

今度はOWN_FFTW_INCLUDESにチェックを入れて試してみる。すると、

--------------------------------------------------------
------ REQUIRED FFTW LIBRARIES WHERE NOT FOUND. --------
-------------- FFTW WILL BE DOWNLOADED AND -------------
--------------- BUILT DURING COMPILE-TIME. -------------
--------------------------------------------------------
---- A WORKING INTERNET CONNECTION WILL BE REQUIRED. ---
--------------------------------------------------------

と出力された。なんで見つけてくれないのかよくわかっていないが、これでRELIONが勝手にFFTWをダウンロードしてコンパイルしてくれると思うので、進めてみる。

$ make -j 12

めっちゃエラー出た。

TIFFという字にまみれているのでlibtiffのリンクが失敗している様。

TIFFがー

CMake GUIに戻るとなぜかTIFF_INCLUDE_DIRとTIFF_LIBRARY_RELEASEが/usr/lib/openmpi/lib/libmpi_cxx.soになっていた。もはやTIFFですらない。自分で打ち間違えたのか?

それぞれ/usr/include/x86_64-linux-gnu と /usr/lib/x86_64-linux-gnu/libtiff.so.5 にして、再ビルド。

$ make -j 12
$ make install

やっと通った。

CMakeのパラメータ

一応、CMakeCache.txtの内容はこちら