分享

GLIBCXX_3.4.22 not found 类似的问题3种解决方案(B站满10万粉丝啦)

 健明 2023-05-17 发布于广东

在我们的马拉松授课团队里的Linux讲师“卖萌哥”的打理下,我们的b站解锁了10万粉丝的“小成就”:

其中最热门的视频课就是「生信技能树」2021公益课(linux基础 & conda)

里面解决了大家初学Linux环节的各种bug,非常值得推荐。。。


其中一个小伙伴跟了我们的 「生信技能树」2021公益课(linux基础 & conda) ,在安装一系列生物信息学软件的时候就遇到了GLIBCXX_3.4.22 not found 类似的问题,并且求助了我们授课团队,所以就要求小伙伴写了个笔记分享一下:


fastp--help  salmon --help 出现GLIBCXX_3.4.22 not found

fastp --help 

fastp: /trainee/Apr204/miniconda3/envs/rna/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by fastp) 

解决方案:

参考:

1、简书:fastp 安装问题及解决方法:https://www.jianshu.com/p/fe08ef2bacba

2、B站:【fastp软件-2】出现 GLIBCXX_3.4.22 not found 问题解决方法_20210210

https://www.bilibili.com/video/av671743185/ 

3、chatGPT:

这个问题通常意味着您使用的二进制文件(例如 fastpsalmon)是使用旧版本的 C++ 标准库编译的,而您正在运行的系统中安装的标准库版本可能更新了。为了解决这个问题,您可以尝试以下方法:

  1. 升级您的 C++ 标准库版本。这可能需要管理员权限以安装最新版本的操作系统或更新软件包。

  2. 重新编译您使用的二进制文件,并使用当前系统中可用的标准库版本进行链接。如果您有源代码,则可以尝试手动编译它们。否则,您可以尝试联系该软件的开发人员,请求他们提供一个与您的操作系统和标准库兼容的二进制文件版本。

  3. 尝试查找相应版本的库文件并手动添加到您的 LD_LIBRARY_PATH 环境变量中。但这种方法可能会引起其他问题并且不建议尝试。

总之,由于这个问题可能涉及到系统库版本的更改,所以如果您不确定如何解决它,请谨慎操作,并请参考相关文档或与系统管理员或开发人员联系。

方案二:如果您遇到 GLIBCXX_3.4.22 not found 的问题,可能需要手动编译 fastpsalmon,并使用当前系统中可用的标准库版本进行链接。

这里提供一个简单的介绍如何手动编译 fastp 的步骤:

  1. 首先,从 fastp 的官方 GitHub 仓库克隆源代码:
git clone https://github.com/OpenGene/fastp.git

进入复制的 fastp 目录,并确保您已经安装了 C++ 编译器和 make 工具。例如,在 Ubuntu 上,可以运行以下命令安装所需的软件包:

sudo apt-get update
sudo apt-get install build-essential
  1. 接下来,使用以下命令构建 fastp
cd fastp
make

这将在当前目录中生成名为 fastp 的二进制文件。

  1. 如果不能正常运行 fastp,请尝试使用以下命令重新编译并链接 fastp
make clean
make LIBRARY_PATH=/usr/lib/x86_64-linux-gnu CPPFLAGS=-I/usr/include/x86_64-linux-gnu

注意,上述路径 /usr/lib/x86_64-linux-gnu/usr/include/x86_64-linux-gnu 适用于 Ubuntu 系统,请根据您所在系统的实际情况进行更改。

  1. 最后,运行 ./fastp --help 命令,确保 fastp 能够正常运行。

接下来,您可以按照类似的步骤手动编译 salmon。如果您不确定如何做,请参考相关文档或与开发人员联系。

方案三:如果您遇到 GLIBCXX_3.4.22 not found 的问题,也可以尝试查找相应版本的库文件并手动添加到您的 LD_LIBRARY_PATH 环境变量中。不过这种方法可能会引起其他问题,并且不建议尝试。

以下是一个简单的步骤来尝试手动添加库文件到 LD_LIBRARY_PATH 环境变量:

  1. 首先,在终端或命令行界面中输入以下命令来查找 GLIBCXX 库文件:
sudo find / -name "libstdc++.so*"

该命令将在整个系统中搜索 libstdc++.so 库文件,并列出所有匹配项的完整路径。

  1. 选择与您当前操作系统和标准库版本兼容的库文件,并将其完整路径复制到剪贴板中。

  2. 使用以下命令将该库文件路径添加到您的 LD_LIBRARY_PATH 环境变量中:

export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH

其中 /path/to/library 应替换为您在步骤 2 中复制的库文件路径。请注意,这个环境变量只在当前会话中有效。如果您想在以后的会话中保留此设置,请将上述命令添加到您的 .bashrc 文件中。

再次注意,这种方法可能会引起其他问题,并且不是首选解决方案。如果您不确定如何处理这个问题,请参考相关文档或与系统管理员或开发人员联系。

学员具体操作:

查看当前版本

strings /trainee/Apr204/miniconda3/envs/rna/bin/../lib/libstdc++.so.6 |grep GLIBC

查找最新版本

find / -name "libstdc++.so.6*"

出现一堆代码,寻找最新版本

/trainee/Apr204/miniconda3/envs/rna/lib/libstdc++.so.6.0.26

获取动态库中最新版本的地址,并复制到本地目录中

从动态库中找到自己目录下(/trainee/Apr204/miniconda3/envs/rna/bin/../lib/libstdc++.so.6)最新的版本地址,然后复制到自己的目录下/trainee/Apr204/miniconda3/envs/rna/lib/libstdc++.so.6.0.26

cp /trainee/Apr204/miniconda3/envs/rna/lib/libstdc++.so.6.0.26  /trainee/Apr204/miniconda3/envs/rna/bin/../lib/libstdc++.so.6

cd /trainee/Apr204/miniconda3/envs/rna/bin/../lib

rm -rf libstdc++.so.6.0.21 #删除原来的链接

ln -s libstdc++.so.6.0.26 libstdc++.so.6 #建立新链接

fastp -h 

解决

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多