libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”

问题描述 投票:0回答:6

为了将 > 2GB 的原始读数上传到 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

ubuntu-16.04 libstdc++
6个回答
34
投票

这是 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

28
投票

我解决了这样的问题(但在 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

(完整版本列表位于此处

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

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

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

22
投票

考虑到

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


2
投票

我在安装 h3 时也遇到了这个问题。 奥克拉斯的答案帮助了我,但扩展了这个答案。 带

conda install -c anaconda gcc
的 gcc 版本是 4.8.5。它与 libstdc++.so.6.0.22
不兼容
。所以我卸载了它并安装了特定版本的gcc(版本6),它解决了我的问题。


1
投票

回答懒人 这应该可以解决大多数情况下的情况

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;

0
投票

CentOS v7.9.2009 STANDARD kvm
上,我通过使用find在整个机器上搜索“libstdc++”来解决:

find / -name "libstdc++.*" 2>/dev/null

然后,我在

/home/virtfs/[username]/usr/lib64/c++-plesk-10.3.0/lib64/libstdc++.so.6.0.28
上的 Plesk 安装上找到了一个新的 libstdc++ 版本,它满足
GLIBCXX_3.4.20
CXXABI_1.3.9
的 VSCode 要求(这就是我找到这个答案的原因,顺便说一句,很抱歉偏离主题)。

所以我备份了实际的

/lib64/libstdc++.so.6
,并为该 Plesk 库创建了一个新的符号链接:

ln -s /home/virtfs/[username]/usr/lib64/c++-plesk-10.3.0/lib64/libstdc++.so.6.0.28 /lib64/libstdc++.so.6

然后尝试通过 VSCode 远程 SSH 连接到服务器,瞧!

我不知道它是否会扰乱 WHM 中的另一个编译器请求,但如果是这样,这就是我备份原始符号链接的原因。

© www.soinside.com 2019 - 2024. All rights reserved.