如何更改 libstdc++.so.6 的版本?
How to change verison of libstdc++.so.6?
我正在尝试将 libstdc++.so.6 从 4.8.3 更改为 3.4.20。
我为什么要这样做?由于此错误:
File "", line 1, in
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /var/lang/lib/python3.6/site-packages/lgraph.cpython-36m-x86_64-linux-gnu.so)
因此,我认为我必须更新版本。 (我也尝试安装 gcc-8.0.1,但要么安装不正确,要么根本不起作用)。
Architecture: 2018 x86_64 x86_64 x86_64 GNU/Linux
Information:
$ bash-4.2# yum info gcc-c++
Installed Packages
Name : gcc-c++
Arch : noarch
Version : 4.8.3
Release : 3.20.amzn1
Size : 0.0
Repo : installed
From repo : amzn-main
Summary : C++ support for GCC
I also ran this command:
bash-4.2# /sbin/ldconfig -p | grep stdc++
libstdc++.so.6 (libc6,x86-64) => /usr/lib64/libstdc++.so.6
libstdc++.so (libc6,x86-64) => /usr/lib64/libstdc++.so
顺便说一下,我是在一个 docker 容器上完成所有这些操作(如果这很重要的话)。 program/package 我是 运行 建立在:
Information:
Architecture: CEST 2018 x86_64 GNU/Linux
server:~$/sbin/ldconfig -p | grep stdc++
libstdc++.so.6 (libc6,x86-64) => /usr/lib/libstdc++.so.6
libstdc++.so.6 (libc6) => /usr/lib32/libstdc++.so.6
libstdc++.so.5 (libc6) => /usr/lib32/libstdc++.so.5
libstdc++.so (libc6,x86-64) => /usr/lib/libstdc++.so
libstdc++.so (libc6) => /usr/lib32/libstdc++.so
server:~$gcc --version
gcc (GCC) 8.1.1 20180531
解决此问题的最简单方法是使用较旧的 GCC 安装(例如 GCC 4.8,就像您 运行 所在的机器)进行构建。另一种方法是简单地将所需的库复制到 运行 所在的机器,并将它们的路径放在环境变量 LD_LIBRARY_PATH
.
中
我通过在我的 docker 容器上手动安装 gcc-8.0.1 并将正确的路径添加到 LD_LIBRARY_PATH
.
来解决这个问题
我正在尝试将 libstdc++.so.6 从 4.8.3 更改为 3.4.20。
我为什么要这样做?由于此错误:
File "", line 1, in ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /var/lang/lib/python3.6/site-packages/lgraph.cpython-36m-x86_64-linux-gnu.so)
因此,我认为我必须更新版本。 (我也尝试安装 gcc-8.0.1,但要么安装不正确,要么根本不起作用)。
Architecture: 2018 x86_64 x86_64 x86_64 GNU/Linux
Information:
$ bash-4.2# yum info gcc-c++
Installed Packages
Name : gcc-c++
Arch : noarch
Version : 4.8.3
Release : 3.20.amzn1
Size : 0.0
Repo : installed
From repo : amzn-main
Summary : C++ support for GCC
I also ran this command:
bash-4.2# /sbin/ldconfig -p | grep stdc++
libstdc++.so.6 (libc6,x86-64) => /usr/lib64/libstdc++.so.6
libstdc++.so (libc6,x86-64) => /usr/lib64/libstdc++.so
顺便说一下,我是在一个 docker 容器上完成所有这些操作(如果这很重要的话)。 program/package 我是 运行 建立在:
Information:
Architecture: CEST 2018 x86_64 GNU/Linux
server:~$/sbin/ldconfig -p | grep stdc++
libstdc++.so.6 (libc6,x86-64) => /usr/lib/libstdc++.so.6
libstdc++.so.6 (libc6) => /usr/lib32/libstdc++.so.6
libstdc++.so.5 (libc6) => /usr/lib32/libstdc++.so.5
libstdc++.so (libc6,x86-64) => /usr/lib/libstdc++.so
libstdc++.so (libc6) => /usr/lib32/libstdc++.so
server:~$gcc --version
gcc (GCC) 8.1.1 20180531
解决此问题的最简单方法是使用较旧的 GCC 安装(例如 GCC 4.8,就像您 运行 所在的机器)进行构建。另一种方法是简单地将所需的库复制到 运行 所在的机器,并将它们的路径放在环境变量 LD_LIBRARY_PATH
.
我通过在我的 docker 容器上手动安装 gcc-8.0.1 并将正确的路径添加到 LD_LIBRARY_PATH
.