【已解决】ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found (required

鳗小鱼 2024-07-10 14:07:04 阅读 60

问题描述

        今天遇到这样一个问题

        具体问题描述如下:

Traceback (most recent call last):

  File "/media/visionx/monica/newproject/globetrotter/main.py", line 13, in <module>

    from torch.utils.tensorboard import SummaryWriter

  File "/home/visionx/anaconda3/envs/globetrotter/lib/python3.8/site-packages/torch/utils/tensorboard/__init__.py", line 12, in <module>

    from .writer import FileWriter, SummaryWriter  # noqa: F401

  File "/home/visionx/anaconda3/envs/globetrotter/lib/python3.8/site-packages/torch/utils/tensorboard/writer.py", line 9, in <module>

    from tensorboard.compat.proto.event_pb2 import SessionLog

  File "/home/visionx/anaconda3/envs/globetrotter/lib/python3.8/site-packages/tensorboard/compat/proto/event_pb2.py", line 6, in <module>

    from google.protobuf import descriptor as _descriptor

  File "/home/visionx/anaconda3/envs/globetrotter/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 28, in <module>

    from google.protobuf.pyext import _message

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/visionx/anaconda3/envs/globetrotter/lib/python3.8/site-packages/google/protobuf/pyext/_message.cpython-38-x86_64-linux-gnu.so)

原因分析和解决

        这个是什么原因呢?

        这个错误表明你的程序或库依赖的 <code>libstdc++.so.6 版本太低,无法满足要求。要解决这个问题,有几种可能的方法:

更新系统或者安装新版本的 libstdc++.so.6:尝试更新你的系统或者手动安装新版本的 libstdc++.so.6 库。

更新或重新安装相关的库:尝试更新或重新安装与 libstdc++.so.6 相关的库,例如 google.protobuf

使用 conda 管理库的环境:如果你正在使用 conda 环境,你可以尝试创建一个新的 conda 环境并重新安装相关的库,以确保所有依赖项都被正确安装和配置。

尝试其他解决方案:如果以上方法都不起作用,你可能需要搜索并尝试其他用户报告的解决方案,或者在相关的论坛或社区寻求帮助。

        libstdc++.so.6是什么,作用是什么?

`libstdc++.so.6` 是 GNU C++ 标准库的动态链接库文件,用于 C++ 程序的运行时支持。它提供了许多标准 C++ 库函数和类的实现,例如字符串处理、容器、算法等。在 Linux 系统中,许多 C++ 程序都依赖于这个库文件。

作用包括但不限于:

1. 提供了许多标准 C++ 库函数和类的实现,使得 C++ 程序员能够方便地使用这些功能。

2. 在运行时为 C++ 程序提供了必要的支持,包括内存管理、异常处理等。

3. 为不同的 C++ 程序提供了共享的库函数,从而节省了存储空间和系统资源。

4. 允许 C++ 程序在不同的系统上进行移植和共享,只要相同版本的库文件可用。

因此,`libstdc++.so.6` 对于 Linux 系统上运行 C++ 程序是非常重要的。

        那说白了,就是一个和很多功能都相关的库函数!

        既然是缺少了,我们怎么解决呢? 
        1、先看一下自己的版本是什么?

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

        2、找到自己电脑其他环境中的最新版本

        记住:一定要最新的,否则还是会报错!我这里是6.0.32

        3、 用该库包替换

<code>sudo cp /home/visionx/anaconda3/envs/sentibase/lib/libstdc++.so.6.0.32 /usr/lib/x86_64-linux-gnu/

         4、删除原来的链接

sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6

        5、建立新的链接

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.32 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

         在此运行之前的命令即可运行成功

/home/visionx/anaconda3/envs/globetrotter/bin/python /media/visionx/monica/newproject/globetrotter/main.py

相关链接

如何解决version `GLIBCXX_3.4.29‘ not found的问题_version `glibcxx_3.4.29' not found-CSDN博客文章浏览阅读3.9w次,点赞113次,收藏200次。解决version `GLIBCXX_3.4.29' not found的问题_version `glibcxx_3.4.29' not found

https://blog.csdn.net/weixin_39379635/article/details/129159713libstdc++.so.6: version `GLIBCXX_3.4.29' not found · pybind/pybind11 · Discussion #3453 · GitHublibstdc++.so.6: version `GLIBCXX_3.4.29' not found

icon-default.png?t=N7T8

https://github.com/pybind/pybind11/discussions/3453

完结撒花

        所谓的生活,应该就是人生理想吧!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。