tdc++.so.6: version `GLIBCXX_3.4.29' not found
001、python程序报错如下:
002、问题分析
a、调用的是python程序
b、libstdc++.so.6是c++标准库
执行python程序时,需要调用c++标准库,libstdc++.so.6(lib = glib, 6 表示第6版),版本不匹配报错,无法找到:GLIBCXX_3.4.29。
003、确认调用的哪里的python程序
(base) [b20223040323@admin2 test_02]$ which python ~/anaconda3/bin/python
根据路径判断当前调用的python时anconda3环境中的python
因此,需要确认anconda3中对应的c++标准库是否存在GLIBCXX_3.4.29
004、在家目录中查找libstdc++.so.6文件
(base) [b20223040323@admin2 test_02]$ find ~ -name "libstdc++.so.6" ## 家目录中查找c++标准库文件 find: ‘/public/home/b20223040323/002_goat_pan_first’: 权限不够 find: ‘/public/home/b20223040323/001_backup_data’: 权限不够 /public/home/b20223040323/anaconda3/envs/py27/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py27/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py11/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py36/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py38/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py38/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/aspera-cli-3.9.6-h5e1937b_0/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-9.3.0-hd4cf53a_17/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/gcc_impl_linux-64-13.1.0-hc4be1a9_0/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/gcc_impl_linux-64-9.5.0-h99780fb_19/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-12.2.0-h46fd767_19/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-13.1.0-hfd8a6a1_0/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/lib/libstdc++.so.6 ## 调用的应该是这个 /public/home/b20223040323/software/edgeturbo-client/lib/libstdc++.so.6
或者使用locate查找:
(base) [b20223040323@admin2 test_02]$ locate libstdc++.so.6 /usr/lib64/libstdc++.so.6 ## 可能调用的这个 /usr/lib64/libstdc++.so.6.0.19 /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
005、找到c++标准库文件libstdc++.so.6之后,需要确认库文件中对用的 GLIBCxxx版本(关注默认调用的库文件)
a、很可能调用的anaconda中的c++标准库文件,因此先在该库文件中查询:
(base) [b20223040323@admin2 test_02]$ strings /public/home/b20223040323/anaconda3/lib/libstdc++.so.6 | grep -i "glibc"
就是没有GLIBCxx_3.4.29.
在locate命令确认的c++标准库中查询:
(base) [b20223040323@admin2 test_02]$ strings /usr/lib64/libstdc++.so.6 | grep -i "glibc"
仍然没有GLIBCXX_.3.4.29.
006、以上初步确认的报错的原因,如何解决?
当前默认的python版本为3.9, 但是对应的c++标准库文件没有GLIBCXX_.3.4.29; 其他版本中是否存在该文件?
(base) [b20223040323@admin2 test_02]$ python --version Python 3.9.18
(base) [b20223040323@admin2 test_02]$ find ~ -name "libstdc++.so.6" find: ‘/public/home/b20223040323/002_goat_pan_first’: 权限不够 find: ‘/public/home/b20223040323/001_backup_data’: 权限不够 /public/home/b20223040323/anaconda3/envs/py27/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py27/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py11/lib/libstdc++.so.6 ## 这里有安装过的python11 /public/home/b20223040323/anaconda3/envs/py36/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py38/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/envs/py38/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/aspera-cli-3.9.6-h5e1937b_0/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-9.3.0-hd4cf53a_17/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/gcc_impl_linux-64-13.1.0-hc4be1a9_0/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/gcc_impl_linux-64-9.5.0-h99780fb_19/x86_64-conda-linux-gnu/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-12.2.0-h46fd767_19/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/pkgs/libstdcxx-ng-13.1.0-hfd8a6a1_0/lib/libstdc++.so.6 /public/home/b20223040323/anaconda3/lib/libstdc++.so.6 /public/home/b20223040323/software/edgeturbo-client/lib/libstdc++.so.6
查看对应的py11的c++标准库文件中是否存在GLIBCXX_3.4.29
(base) [b20223040323@admin2 test_02]$ strings /public/home/b20223040323/anaconda3/envs/py11/lib/libstdc++.so.6 | grep -i "glibc"
anaconda3 的python11中默认的有对应版本的文件。
007、解决方法,激活anconda3的python11环境,然后再运行程序。
(base) [b20223040323@admin2 test_02]$ conda env list ## 列出环境 # conda environments: # base * /public/home/b20223040323/anaconda3 ascp /public/home/b20223040323/anaconda3/envs/ascp py11 /public/home/b20223040323/anaconda3/envs/py11 py27 /public/home/b20223040323/anaconda3/envs/py27 py36 /public/home/b20223040323/anaconda3/envs/py36 py38 /public/home/b20223040323/anaconda3/envs/py38 (base) [b20223040323@admin2 test_02]$ conda activate py11 ## 激活python11 (py11) [b20223040323@admin2 test_02]$ python --version ## 查看 Python 3.11.5
008、测试程序
(py11) [b20223040323@admin2 test_02]$ time python3 test.py
前面的GLIBCxx_3.4.29报错消失.
参考:
01、https://blog.csdn.net/qq_35812205/article/details/129475497
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2022-10-31 >chr1 <_io.TextIOWrapper name='result.fa' mode='w' encoding='UTF-8'>
2022-10-31 python 中实现将两个列表合并为字典
2022-10-31 linux 中实现文本的按列反转
2021-10-31 R语言中矩阵运算
2021-10-31 R语言实现计算两个向量的协方差、标准差、皮尔逊相关系数
2021-10-31 R语言统计 plink格式数据样本缺失率
2021-10-31 linux shell 统计plink格式样本缺失率