【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData

这篇具有很好参考价值的文章主要介绍了【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

使用MMDetection复现论文,出现如下Bug:

ImportError:/home/quaiping/anaconda3/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: 
undefined symbol: _ZN6caffe28TypeMeta21_typeMetaDataInstanceIdEEPKNS_6detail12TypeMetaDataEv

原因分析:

mmcv官网点明了如何去判断并解决这类问题:
【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData,MMDetection,python,linux
我这里稍微解释一下:
当报错中出现:“undefined symbol”或者“cannot open xxx.so”时,你可以从以下三个方面去考虑:
1.如果“undefined symbol”后面出现的是CUDA/C++ symbols, 具体来说,就是有Libcudart.so/GLIBXX类似内容,就检查CUDA/GCC运行时和编译mmcv时,是不是同一个版本。
补充:可能会有人问,如何去检查?
如果你是直接源码安装mmcv,或者通过pip install mmcv命令安装,那么mmcv在安装过程中有一个编译的过程,你只要保证这个过程的环境与最后运行代码的环境一致,就不会出问题。
如果你是通过下载编译好的whl文件去安装mmcv,就是通过类似命令:pip install mmcv-full==1.3.0 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html,那么你就去检查,你运行代码的环境中的cuda是不是与命令中的cu版本一致,查看自己环境的cuda版本命令:nvcc -V
【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData,MMDetection,python,linux
很明显,我使用命令后,显示版本号为10.1,与cu101一致,如果你的结果不一致,就按照你自己环境中的cuda版本(红框中中对应的版本)去下载对应版本的mmcv.

2.如果“undefined symbol”后面出现的是Pytorch symbols,具体来说就是有caffe, aten, TH等内容,你就要检查你的环境中的pytorch版本与编译mmcv时使用的pytorch是否一致。
补充:
检查自己环境的pytorch:命令行依次键入:python import torch print(torch.--version--)
检查编译mmcv时的环境:看你通过pip install mmcv-full==1.3.0 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html安装mmcv时,torch是不是与你自己环境相对应。

3.进入目录./mmdet/utils ,运行python collect_env.py,查看PyTorch, torchvision, and MMCV 是否在同一个环境下运行。

解决方案:

很显然,我的bug属于第2种情况: _ZN6caffe28TypeMeta21_typeMetaDataInstanceIdEEPKNS_6detail12TypeMetaDataEv,我的undefined symbol后面出现了caffe字符,这时候需要我去检查我的pytorch版本。
我个人环境的pytorch版本为1.8.0,安装的mmcv是通过1.6.0的pytorch编译的,卸载1.6.0版本ptytorch编译的mmcv,安装对应1.8.0版本的mmcv就行了。文章来源地址https://www.toymoban.com/news/detail-625724.html

到了这里,关于【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题

    网上有分析说调用的高版本的gcc,生成的动态库没有替换老版本gcc的动态库导致。因此需要把高版本的so文件复制到低版本的so文件目录下。如下分析: https://www.jianshu.com/p/6424807b7e20 但我报的错有点跟他们不太一样,我实在python的虚拟环境中执行的。我查看了虚拟环境中的s

    2024年02月17日
    浏览(44)
  • 没有规则可制作目标“/usr/lib/x86_64-linux-gnu/

    在安装pangolin依赖库的时候,系统提示如下的错误: 问题1: 问题2: 这是由于 动态链接库链接中断 造成的,所以我们重要的找到造成中断的原因。 你好!经过查阅网上出现的相似问题,总结我知道的三种原因: 终端中输入以下命令: 该文件夹下没有错误提示的这个文件

    2024年02月12日
    浏览(44)
  • 解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found+截屏操作

    这个是默认路径下的libstdc++.so.6缺少GLIBCXX_3.4.29,你有可能缺少其它版本的比如3.4.22,解决方法一样,如下所示: (1)使用指令先看下目前都有哪些版本的 我这里只到3.25,所以确定是确实这个文件 (2)使用 来查看当前系统中其它的同类型文件,找到一个版本比较高的, 我

    2023年04月22日
    浏览(47)
  • 丝滑解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题

    基础环境 :MacOS m1、python=3.9 前情提要 :在Anaconda终端运行代码的时候,显示报错: 问题分析 :根据提示是 /usr/lib/x86_64-linux-gnu/ 路径下的 libstdc++.so.6 缺少版本 GLIBCXX_3.4.29 解决过程 : 我们可以输入以下指令查看当前路径下有哪些版本 GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.

    2024年02月04日
    浏览(42)
  • 【终极解决方案】ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found

    ​ autodl平台 系统ubuntu18.04 昨天还好好的程序,今天就报错,可能是更新了某个库,导致版本不匹配。报错如下: 注意上图圈起来的部分,出错的路径是在/usr/lib/x86_64-linux-gnu/libstdc++.so.6,要注意其他很多博主的并没有强调不同设备之间的路径不同,甚至还会有前后矛盾的现象

    2024年01月21日
    浏览(36)
  • 无root权限解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题

    在利用实验室中的服务器中运行代码时,因libstdc++.so.6版本问题产生报错信息如下: ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29\\\' not found (required by /home/{用户名}/anaconda3/envs/torch/lib/python3.8/site-packages/matplotlib/_path.cpython-38-x86_64-linux-gnu.so) ①使用下述命令查看/us

    2024年02月03日
    浏览(34)
  • Ubuntu18.04升级GLIBC_2.29,解决ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘

    个人在搭配transformers环境(Ubuntu18.04),使用时出现如下报错: ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29’ not found (required by /home/xxxx/anaconda3/envs/xxxx/lib/python3.6/site-packages/tokenizers/tokenizers.cpython-36m-x86_64-linux-gnu.so) 分析上述报错,新版transformers的tokenizers需要2.29版本的

    2024年02月12日
    浏览(36)
  • (解决方案) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found (node required by node)

    您可能会遇到安装在 ubuntu 操作系统上的 NodeJS 问题, 当您运行  node -v 或 pm2 list  命令时出现错误:-   node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28\\\' not found (required by node) 。 我尝试了各种解决方案 堆栈溢出 ,最后一个解决方案对我有用,只需通过以下命令运行即可。

    2024年02月16日
    浏览(30)
  • /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found

    1.检查版本 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC 解决办法 添加一个高级版本系统的源,直接升级libc6 1.打开源文件: sudo nano /etc/apt/sources.list 2.添加内容: deb http://th.archive.ubuntu.com/ubuntu jammy main 3.升级 sudo apt-get update sudo apt-get install libc6 如有疑问,请看原文链接:原文链接

    2024年04月13日
    浏览(28)
  • ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

    网上大多数解决办法是找到含有GLIBCXX_3.4.29的文件并把这一项复制过去,但有时因为电脑libstdc++6版本过低,甚至不包含这一项。这里选择直接更新相应的库,但不曾考虑和过去文件的兼容性问题 本人设备:ubuntu22.04 答案来源:https://stackoverflow.com/questions/65349875/where-can-i-find-

    2024年04月26日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包