あるツールを使うときの共有ライブラリのバージョンがシステムに組み込まれているのに、見つからないと怒られて困っています。
そのツールは、使う際に以下のエラーを吐き出して中止してしまします。
ツール名: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ツール名) ツール名: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ツール名)
そこでlddでツールの共有ライブラリへの依存関係を調べてみたら、以下の通りです。
$ ldd ツール名 linux-vdso.so.1 => (0x00007ffe33bcd000) libz.so.1 => /lib64/libz.so.1 (0x00002b71aefbf000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b71af1d5000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00002b71af3f2000) libm.so.6 => /lib64/libm.so.6 (0x00002b71af6fa000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002b71af9fc000) libc.so.6 => /lib64/libc.so.6 (0x00002b71afc13000) /lib64/ld-linux-x86-64.so.2 (0x000055c9a6258000)
とりあえず、libc.so.6とlibstdc++.so.6はありました。
次に、libc.so.6とlibstdc++.so.6には、GLIBC_2.14とGLIBCXX_3.4.15が組み込まれているか調べました。
$ strings /lib64/libc.so.6 | grep GLIBC_2.14 GLIBC_2.14 memcpy@@GLIBC_2.14 GLIBC_2.14
$ strings /lib64/libstdc++.so.6 | grep GLIBCXX_3.4.15 GLIBCXX_3.4.15
以上のように、libc.so.6とlibstdc++.so.6には、GLIBC_2.14とGLIBCXX_3.4.15が組み込まれていました。
詳細は書ききれませんが、grep GLIBCやgrep GLIBCXXなどとバージョンの詳細を書かずに検索すると、GLIBC_2.xx(xx=15, 16, 17など)やGLIBCXX_3.4.xx(xx=16, 17など)などと他のバージョンも多く出てきました。
ちなみに、libc.so.6とlibstdc++.so.6の実体は何だろうと調べました。
$ ls -l /lib64/libc.so.6 lrwxrwxrwx. 1 root root 12 1月 24 2018 /lib64/libc.so.6 -> libc-2.17.so
$ ls -la /usr/lib64/libstdc++.so.6 lrwxrwxrwx. 1 root root 19 1月 24 2018 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
このように、libc.so.6とlibstdc++.so.6は以下のように紐づけられていました。
libc.so.6 -> libc-2.17.so libstdc++.so.6 -> libstdc++.so.6.0.19
もちろん、libc-2.17.soやlibstdc++.so.6.0.19には、GLIBC_2.14とGLIBCXX_3.4.15が組み込まれていました。
ここまでやったのですが、ツールが要求するGLIBC_2.14とGLIBCXX_3.4.15をどう呼び込めば良いのかわかりません。
推測では、システムがとあるバージョンの使用を優先的に促していて、そのバージョンがツールが要求するバージョンと異なるのではないかと考えています。
当方、かなり初心者ですのでやさしくご教授いただければ幸いでございます。
何卒宜しくお願い申し上げます。
あなたの回答
tips
プレビュー