1. 質問:
今日ウィスパーをインストールしているときに、突然次のようなエラーが報告されました。
OSError: Could not load shared object file: libllvmlite.so
Errors were: [OSError("/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
(required by /opt/conda3/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so)"), OSError('libllvmlite.so: cannot open shared object file: No such file or directory'), OSError('./libllvmlite.so: cannot open shared object file: No such file or directory'), OSError("/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
(required by /opt/conda3/lib/python3.9/site-packages/llvmlite/binding/libllvmlite.so)")]
2、その理由
1. 上位バージョンの gcc が呼び出され、生成された動的ライブラリは古いバージョンの gcc の動的ライブラリを置き換えません。
3. 解決策
1. libstdc++.so.6 のサポートされているバージョンを表示します。
(base) [root@comm-agi lib64]# strings /lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
上記からわかるように、gcc の動的ライブラリにはバージョン 3.4.21 がありません。
2. ダイナミック ライブラリ ファイルの上位バージョンを見つけて、/lib64 ディレクトリにコピーします。
2.1. インターネットからダウンロードすることも、ローカルで見つけることもできます
2.2. まず元のバージョンを確認します: /lib64 ディレクトリの下に次のように入力します: ll|grep libstdc++.so.6
赤い矢印の位置を見てください。元のバージョンは 6.0.19 です。
2.3. 上位バージョンをローカルで直接見つけて、次のコマンドを入力します。
(base) [root@ lib64]# find / -name "libstdc++.so.6.0*"
検索結果には次のことが表示されます。
/usr/lib/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so.6.0.28
2.4 なので、6.0.28 を /lib64 ディレクトリにコピーしました: cp /usr/lib64/libstdc++.so.6.0.28 /lib64
2.5. 元のソフトリンクを削除します: rm /lib64/libstdc++.so.6
2.6、新しいソフトリンクを作成します: ln -s /lib64/libstdc++.so.6.0.28 /lib64/libstdc++.so.6
(base) [root@ lib64]# ll|grep libstdc++.so.6
lrwxrwxrwx 1 root root 30 Aug 10 17:26 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.28
-rwxr-xr-x 1 root root 995840 Sep 30 2020 libstdc++.so.6.0.19
-rwxr-xr-x 1 root root 13121976 Aug 10 17:15 libstdc++.so.6.0.28
それでおしまい。ただし、/lib64 ディレクトリにコピーする必要はないと思います。2.3側の接続から直接ソフトリンクを構築するだけです