Introduction
spotify が公開している、近似最近傍探索ライブラリ Annoy (Approximate Nearest Neighbors Oh Yeah) というがあるが、こいつを CentOS7 出ビルドしようとしたら
/opt/data/FaceRecognitionDotNet/src/Searches/AnnoySearch/../annoy/src/annoylib.h:68:24: fatal error: shared_mutex: No such file or directory
みたいなエラーが出てしまった。
結論から言えば、C++ 14 が必要であり、CentOS 7 でインストールできる gcc のバージョンが古かったのが原因。
gcc 5 をインストールすればいいよって話なんだが、ぐぐってみつかるのが
1 | yum install -y centos-release-scl |
みたいなコマンド。
でも、Devtoolset-4 にあるように、すでに EOL になっておりインストールできない。
1 | yum install -y centos-release-scl |
なので、gcc を自分でビルドしよう、という話。
How to build?
事前に yum groupinstall -y "Development Tools"
とかで最低限ビルドに必要なものはインストール済みであるものとする。
なお、wget と bzip2 が追加で必要。
下記のコマンドで一発。
1 | cd /opt |
configure の際、オプションの有無で苦労した。
configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If you have them, rerun configure with –enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with –disable-multilib.
とか
checking dynamic linker characteristics… configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
ね。
使うときは
1 | export CMAKE_C_COMPILER=/usr/local/bin/gcc |
みたいにすれば良いと思う。