minimac3のビルドとダイナミックリンクライブラリエラー

minimac3をbuildしたいが、gcc7.2ではbuildがうまくいかなかった。どうやら内部でlibStatGenというライブラリを使用しているが、これが古い記法で書かれているらしく、gcc7.2では逆に下のエラーが出てbuildできなかった。

Parameters.cpp: In member function ‘virtual void LongParameters::Status()’:
Parameters.cpp:573:25: error: use of an operand of type ‘bool’ in ‘operator++’ is deprecated [-Werror=deprecated]
             legacy_count++;
                         ^~
cc1plus: all warnings being treated as errors
make[3]: *** [obj/Parameters.o] Error 1
make[2]: *** [general] Error 2
make[1]: *** [../Library/libStatGenForMinimac3/libStatGen.a] Error 2
make[1]: Leaving directory `/home/Minimac3/src'
make: *** [src] Error 2

探すとlegacy_countの型をintにしたらよいとかいうのも見つけたけど、そこを直してもまたエラーが。結局やったことはlibStatgenをcloneしてきてlibStatgen/generalをMinimac3/Liberary/libStatgenforMinimac/generalと入れ替えて再度build。通ったと思ったけど実行しようとすると

./Minimac3: /opt/gcc-4.9.1/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./Minimac3)

みたいなエラー。ダイナミックリンクライブラリが古い(‘Д’)

これには以前も遭遇しており、解決したいところではあった。調べると、こういう場合、DLLの読み込み順を変更する環境変数LD_PRELOADを設定するとよいみたい。

export LD_PRELOAD=/home/local/gcc-7.2.2/lib64/libstdc++.so.6

コメント

このブログの人気の投稿

Inverse-normal transformation

SKAT

locuszoom