在我们的马拉松授课团队里的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:
这个问题通常意味着您使用的二进制文件(例如 fastp
或 salmon
)是使用旧版本的 C++ 标准库编译的,而您正在运行的系统中安装的标准库版本可能更新了。为了解决这个问题,您可以尝试以下方法:
升级您的 C++ 标准库版本。这可能需要管理员权限以安装最新版本的操作系统或更新软件包。
重新编译您使用的二进制文件,并使用当前系统中可用的标准库版本进行链接。如果您有源代码,则可以尝试手动编译它们。否则,您可以尝试联系该软件的开发人员,请求他们提供一个与您的操作系统和标准库兼容的二进制文件版本。
尝试查找相应版本的库文件并手动添加到您的 LD_LIBRARY_PATH 环境变量中。但这种方法可能会引起其他问题并且不建议尝试。
总之,由于这个问题可能涉及到系统库版本的更改,所以如果您不确定如何解决它,请谨慎操作,并请参考相关文档或与系统管理员或开发人员联系。
方案二:如果您遇到 GLIBCXX_3.4.22 not found
的问题,可能需要手动编译 fastp
或 salmon
,并使用当前系统中可用的标准库版本进行链接。
这里提供一个简单的介绍如何手动编译 fastp
的步骤:
fastp
的官方 GitHub 仓库克隆源代码:git clone https://github.com/OpenGene/fastp.git
进入复制的 fastp 目录,并确保您已经安装了 C++ 编译器和 make 工具。例如,在 Ubuntu 上,可以运行以下命令安装所需的软件包:
sudo apt-get update
sudo apt-get install build-essential
fastp
:cd fastp
make
这将在当前目录中生成名为 fastp
的二进制文件。
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 系统,请根据您所在系统的实际情况进行更改。
./fastp --help
命令,确保 fastp
能够正常运行。接下来,您可以按照类似的步骤手动编译 salmon
。如果您不确定如何做,请参考相关文档或与开发人员联系。
方案三:如果您遇到 GLIBCXX_3.4.22 not found
的问题,也可以尝试查找相应版本的库文件并手动添加到您的 LD_LIBRARY_PATH 环境变量中。不过这种方法可能会引起其他问题,并且不建议尝试。
以下是一个简单的步骤来尝试手动添加库文件到 LD_LIBRARY_PATH 环境变量:
sudo find / -name "libstdc++.so*"
该命令将在整个系统中搜索 libstdc++.so 库文件,并列出所有匹配项的完整路径。
选择与您当前操作系统和标准库版本兼容的库文件,并将其完整路径复制到剪贴板中。
使用以下命令将该库文件路径添加到您的 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
联系客服