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 

 

posted @ 2023-10-31 10:19  小鲨鱼2018  阅读(1086)  评论(0)    收藏  举报