mongo db を srcから installしようとしましたが、centos 7付属のgccが古かった為、 gcc ver.8.3.0 をsrcから install
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz $ tar -xvf gcc-8.3.0.tar.gz $ cd gcc-8.3.0cd # 以下にて必要なライブラリ?がダウンロードされます $ ./contrib/download_prerequisites $ mkdir build $ cd build $ ../configure \ --prefix=/usr/local/gcc8 \ --disable-bootstrap \ --disable-multilib \ --enable-languages=c,c++ $ make $ sudo make install
g++: internal compiler error: Killed (program cc1plus) のエラー
上記の configureでは、いくつかoptionを指定していますが、 このoptionなしで、makeを実行したところ、以下のようなエラーとなりました。
g++: internal compiler error: Killed (program cc1plus)
インターネットで検索しましたが、メモリ不足が原因のようでしたので 上記のoption指定や、不要なdaemonを停止、更には make -jでなく単なる「make」によりgccのbuildができました
既存のgccをmvでバックアップ後、ln -s で配備
今回の gcc ver.8.30は /usr/local/gcc8 へ installし /usr/bin/gcc や /usr/bin/g++ 、/lib64/libstdc++.so.6 はmvでバックアップし ln -s で置き換え?しています。
$ sudo mv /usr/bin/gcc /usr/bin/gcc.20190810 $ sudo mv /usr/bin/g++ /usr/bin/g++.20190810 $ sudo ln -s /usr/local/gcc8/bin/gcc /usr/bin/gcc $ sudo ln -s /usr/local/gcc8/bin/g++ /usr/bin/g++ $ sudo mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6.20190810 $ sudo ln -s /usr/local/gcc8/lib64/libstdc++.so.6.0.25 libstdc++.so.6
ちなみに libstdc++.so.6 の ln -s を行う前は、mongod 起動時に 次のエラーが表示されていました。
$ sudo /usr/local/mongodb/bin/mongod -f /etc/mongod.conf /usr/local/mongodb/bin/mongod: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/mongodb/bin/mongod) /usr/local/mongodb/bin/mongod: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /usr/local/mongodb/bin/mongod) /usr/local/mongodb/bin/mongod: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mongodb/bin/mongod) /usr/local/mongodb/bin/mongod: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/mongodb/bin/mongod)
また、 ln -s libstdc++.so.6 後、GLIBCXX_3.4.20 等が含まれることの確認は 次のように strings + grep で行っています。
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX