为了将 > 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 中此问题的解决方案
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
我解决了这样的问题(但在 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 ...
考虑到
/usr/lib/x86_64-linux-gnu/libproxy.so.1
是由Ubuntu提供的,我们假设它与系统libstdc++库兼容。这意味着应用程序实际上并未使用该系统库,而是使用其他版本。我建议检查应用程序是否设置了 LD_LIBRARY_PATH
以及该路径上是否有 libstdc++.so.6
的另一个副本。在这种情况下,请尝试将其移走或删除 - 然后应用程序应切换到系统库,该库较新且应向后兼容。
我在安装 h3 时也遇到了这个问题。 奥克拉斯的答案帮助了我,但扩展了这个答案。 带
conda install -c anaconda gcc
的 gcc 版本是 4.8.5。它与 libstdc++.so.6.0.22
不兼容。所以我卸载了它并安装了特定版本的gcc(版本6),它解决了我的问题。
回答懒人 这应该可以解决大多数情况下的情况
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;
在
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 中的另一个编译器请求,但如果是这样,这就是我备份原始符号链接的原因。