如何更改libstdc ++的版本.so.6?

时间:2018-06-10 00:25:34

标签: c++ gcc libstdc++

我正在尝试将libstdc ++。so.6从4.8.3改为3.4.20。

为什么我这样做?由于这个错误:

  

文件"",第1行,in   ImportError:/usr/lib64/libstdc++.so.6:版本`GLIBCXX_3.4.20'找不到(/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容器上做了所有这些(如果这很重要)。我正在运行的程序/包是建立在:

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

2 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是使用较旧的GCC安装进行构建(例如GCC 4.8,就像您运行的机器一样)。另一种方法是简单地将所需的库复制到您运行的机器上,并将它们的路径放在环境变量LD_LIBRARY_PATH中。

答案 1 :(得分:0)

我通过在我的docker容器上手动安装gcc-8.0.1并向LD_LIBRARY_PATH添加正确的路径来修复此问题。