「minicondaにCMakeの検索パスを持ってかれる」の版間の差分
(→FFTWがー) |
(→とりあえずの対処) |
||
行107: | 行107: | ||
== とりあえずの対処 == | == とりあえずの対処 == | ||
CMake GUIでインクルードパスとライブラリパスを頑張って手打ちする。 | CMake GUIでインクルードパスとライブラリパスを頑張って手打ちする。 | ||
+ | CMakeはv3.5.1を使用。 | ||
=== FFTWがー === | === FFTWがー === | ||
行148: | 行149: | ||
と出力された。なんで見つけてくれないのかよくわかっていないが、これでRELIONが勝手にFFTWをダウンロードしてコンパイルしてくれると思うので、進めてみる。 | と出力された。なんで見つけてくれないのかよくわかっていないが、これでRELIONが勝手にFFTWをダウンロードしてコンパイルしてくれると思うので、進めてみる。 | ||
+ | |||
+ | $ make -j 12 | ||
+ | |||
+ | めっちゃ[[エラー]]出た。 |
2019年5月15日 (水) 04:37時点における版
現象
- 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."なる記述があったので、これを使ってみる
- includeとlibはどこですか
- https://packages.ubuntu.com/xenial/amd64/libtiff5-dev/filelist
- /usr/include/x86_64-linux-gnu と /usr/lib/x86_64-linux-gnu/ でした
$ 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に持ってかれたまま
- miniconda2をPATHから削除してcmakeする
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
めっちゃエラー出た。