【问题标题】:libstdc++.so.6: version `GLIBCXX_3.4.20' not foundlibstdc++.so.6:未找到版本“GLIBCXX_3.4.20”
【发布时间】:2017-11-30 02:16:57
【问题描述】:

为了将大于 2GB 的 raw-reads 上传到 Genebank 上的 SRA,我在 ubuntu 16.04 上安装了 aspera connect 插件。但是插件没有弹出,如基因库 SRA 门户上的说明所示。

我在本地初始化插件时在终端上收到此错误 (~/.aspera/connect/bin/asperaconnect):

lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/x86_64-linux-gnu/libproxy.so.1)
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so

我关注了一些线程,创建了一个指向/usr/lib/libstdc++.so.6 的链接但它没有解决问题,仍然显示上面的错误消息。 运行strings /usr/lib/libstdc++.so.6 | grep GLIBCXX 得到这个:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
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
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_DEBUG_MESSAGE_LENGTH

GLIBCXX_3.4.20 在列表中。我不知道如何让插件识别。

谢谢你, Xp

【问题讨论】:

  • 所以你现在在 /usr/lib 中有一个指向 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 的符号链接?你确定周围没有旧版本的 libstdc++,也许在 ~/lib 中?也许插件自带旧版本,但加载了系统的 libproxy,而这又需要更新的 libstdc++。
  • 在明确限定为开发软件的网站上运行软件有什么问题?任何系统管理员都可能遇到此问题,无需参与开发。

标签: ubuntu-16.04 libstdc++


【解决方案1】:

考虑到/usr/lib/x86_64-linux-gnu/libproxy.so.1 是由Ubuntu 提供的,我们假设它与系统libstdc++ 库兼容。这意味着该应用程序实际上并未使用该系统库,而是使用了其他版本。我建议检查应用程序是否设置了LD_LIBRARY_PATH,以及该路径上是否还有libstdc++.so.6 的另一个副本。在这种情况下,请尝试将其移开或删除,然后应用程序应切换到系统库,该系统库较新且应向后兼容。

【讨论】:

  • 我在 Ubuntu 上使用 XAMPP,遇到了同样的问题。将libstdc++.so.6 重命名为libstdc++.so.6_old 就成功了。非常感谢你
【解决方案2】:

懒惰的人的答案 在大多数情况下,这应该可以解决问题

apt-get update && apt-get install sudo && \
sudo apt-get install build-essential software-properties-common -y && \
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
sudo add-apt-repository ppa:george-edison55/cmake-3.x -y && \
sudo apt-get update && \
sudo apt-get install gcc-snapshot -y && \
sudo apt-get update && \
sudo apt-get install gcc-6 g++-6 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && \
sudo apt-get install gcc-4.8 g++-4.8 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 && \
sudo update-alternatives --config gcc && \
sudo apt-get update && \
sudo apt-get install cmake -y;

【讨论】:

    【解决方案3】:

    这是 Ubuntu 16.04 中此问题的解决方案

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install gcc-4.9
    sudo apt-get upgrade libstdc++6
    

    您可以像这样检查是否获得了 GLIBCXX 所需的版本:

    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
    

    【讨论】:

    • 这个对我有用,Linux Mint (Ubuntu Xenial 16.04)。特别是,我在升级到 FileZilla 3.30.0 后遇到了这个问题,它不再运行,所以希望任何需要这个评论的人都能找到它。
    • 它不支持 GLIBCXX 3.4.20 和 21。我能做些什么吗?
    【解决方案4】:

    我解决了这样的问题(但在 CentOS 上是 GLIBCXX_3.4.21),但它不依赖于操作系统。该库是gcc 编译器的一部分,因此需要安装或编译适当版本的gcc。这是gcc 的版本表和适当的libstdc++ 的版本:

    GCC 4.9.0: libstdc++.so.6.0.20
    GCC 5.1.0: libstdc++.so.6.0.21
    GCC 6.1.0: libstdc++.so.6.0.22
    GCC 7.1.0: libstdc++.so.6.0.23
    GCC 7.2.0: libstdc++.so.6.0.24
    GCC 8.0.0: libstdc++.so.6.0.25
    

    (完整的版本列表是here

    它不依赖于如何安装 gcc - 它可以从包中安装或从源代码编译和安装。

    系统 gcc 库可能是可用的,而不是新安装的。所以需要指定环境变量在哪里可以找到库,例如在这样的命令行中:

    $ LD_LIBRARY_PATH=/usr/local/lib64 command args ...
    

    【讨论】:

    • 我通过更新链接/usr/lib64/libstdc++.so.6 以指向我在/usr/local/lib64/libstdc++.so.6 拥有的较新版本,并使用以下命令永久修复了此问题:ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6。如果您需要还原,旧版本仍然没有指向它的链接。有点破解,但它的工作原理。
    【解决方案5】:

    我在安装 h3 时也遇到了这个问题。 oklas 的答案帮助了我,但扩展了这个答案。 带有“conda install -c anaconda gcc”的 gcc 版本是 4.8.5。它与 libstdc++.so.6.0.22 不兼容。所以我卸载了它并安装了一个特定版本的 gcc(版本 6),它解决了我的问题。

    【讨论】:

    • 这可以是评论而不是答案。请阅读规则。
    猜你喜欢
    • 2019-05-04
    • 2015-06-05
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多