【问题标题】:How to change verison of libstdc++.so.6?如何更改 libstdc++.so.6 的版本?
【发布时间】:2018-06-10 00:25:33
【问题描述】:

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

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

文件“”,第 1 行,在 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

【问题讨论】:

    标签: c++ gcc libstdc++


    【解决方案1】:

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

    【讨论】:

    • 请注意,至少经常(如果不是总是),libstdc++ 与 libc 本身的版本紧密耦合。因此,您不仅需要复制一个库,而且还必须为正确的操作系统版本构建它。不久前我尝试沿着这种路线走下去,但无法真正解决随之而来的问题 - 我最终复制了所有必要的部分,但它会出现段错误,很可能是由于操作系统版本之间的不兼容造成的主机和目标系统。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 2019-05-04
      • 1970-01-01
      • 2015-06-05
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2011-07-10
      相关资源
      最近更新 更多