Conda虚拟环境下libp11-kit.so.0: undefined symbol: ffi_type_pointer...问题解决

这篇具有很好参考价值的文章主要介绍了Conda虚拟环境下libp11-kit.so.0: undefined symbol: ffi_type_pointer...问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 背景说明

最近需要在Conda虚拟环境下运行ROS相关代码,其中在运行代码import moveit_commander时,返回报错ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0。由于在网上没有找到和我一样的问题,且在github上也没找到解决方法,以为是个例就没打算记录,后来在与同学交流过程中发现,他们在conda虚拟环境中使用ROS时,均出现这种错误,故此记录错误并提出一种解决方法,希望能够对解决此类问题有所帮助。

2 报错原因

可以看到,我的报错来源是我在python中import moveit_commander,但是可能其他命令也会报出该错误,但是报错原因均来自libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0,结合github上相关问题的讨论,理解过来意思大概就是libffi的版本不一致,导致了libp11-kit.so.0在使用时出现了未定义符号问题。其实可以推到以后出现同类型问题,解决方法也应该基本类似。

3 解决方法

打开至conda虚拟环境下lib文件夹中,路径为/home/anaconda3/envs/xxx/lib,在文件夹内启动终端,输入命令ls -l,获得结果如图所是。
importerror: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_ty,Ubuntu,python,ubuntu
这里,由于我已经修改了链接,所以可能会有所不同。可以看到,你的libffi.so.7链接至libffi.so.8.1.0,所以,这也就是为什么会在程序中,libffi报版本错误了。找到原因,解决方法也很简单,我这边选择的方式是将该路径下的libffi.so.7文件备份后(重命名为libffi_bak.so.7),再在该路径下创建一个新的libffi.so.7链接至/lib/x86_64-linux-gnu/libffi.so.7.1.0,即输入命令:

sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7
sudo ldconfig

至此,再次运行程序,问题应该就解决了。

4 补充说明

上述过程解决问题后,师弟秉持打破沙锅问到底的精神,一直在追究为什么会出现这种情况。。。后来,找到问题所在:原来是Python 3.8.16版本在安装过程中,就会默认安装libffi-3.4.2,在该库中,就会出现旧版本兼容老版本问题,即出现libffi.so.7链接至libffi.so.8.1.0,进而产生报错。而在python3.8.10中,默认安装libffi-3.3版本,在该版本内,libffi.so.7链接至libffi.so.7.1.0,就不会产生上述问题。因此,另一种解决方式即为安装python 3.8.10,同样能解决该问题。文章来源地址https://www.toymoban.com/news/detail-778782.html

到了这里,关于Conda虚拟环境下libp11-kit.so.0: undefined symbol: ffi_type_pointer...问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • git clone 报错:/usr/lib/git-core/git-remote-https: symbol lookup error: /lib/x86_64-linux-gnu/libp11-k

    错误详情 /usr/lib/git-core/git-remote-https: symbol lookup error: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0 解决办法 关联issue

    2024年02月09日
    浏览(25)
  • 【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData

    使用MMDetection复现论文,出现如下Bug: mmcv官网点明了如何去判断并解决这类问题: 我这里稍微解释一下: 当报错中出现:“undefined symbol”或者“cannot open xxx.so”时,你可以从以下三个方面去考虑: 1.如果“undefined symbol”后面出现的是CUDA/C++ symbols, 具体来说,就是有Libcudart

    2024年02月14日
    浏览(22)
  • 关于使用mmcv时解决ImportError: /xx/mmcv/_ext.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZN2at4**的方法

    近期在医学图像分割验证模型性能工作中,需要安装mmcv,但是有报错 中间过程中由于一开始安装的mmcv版本不同,这里报错无法识别的符号也不一样。 在网上找了很多可能解决问题的方法,但是也没有顺利解决,同时也遇见 这类报错。 这类问题可能说明mmcv的版本和已经安装

    2024年04月27日
    浏览(20)
  • 解决 conda新建虚拟环境只有一个conda-meta文件&conda新建虚拟环境不干净

    像以前一样通过conda 新建虚拟环境时发现环境一团糟,首先新建虚拟环境 这时候activate newenv,通过pip list,会发现有很多很多的包,都是我在其他环境用到的。但诡异的是,来到anaconda下env的目录,却发现newenv下只有一个conda-meta文件。这到底是为啥? 第一个问题,newenv下只有

    2024年01月21日
    浏览(43)
  • 改变conda创建虚拟环境时候的默认路径和拷贝、删除、创建Conda虚拟环境

    conda环境默认安装在用户目录C:Usersusername.condaenvs下,如果选择默认路径,那么之后创建虚拟环境,也是安装在用户目录下。不想占用C盘空间,可以修改conda虚拟环境路径。 首先,找到用户目录下的.condarc文件(C:Usersusername)。 打开.condarc文件之后,添加或修改.condarc 中的

    2024年02月12日
    浏览(33)
  • 离线环境conda虚拟环境备份迁移--conda pack问题

    1.第一步:创建虚拟环境 conda create -n pyenv --clone base  或者 conda create -n pyenv python==3.8.5 --offline 命令执行结束,在路径/xxxx/anaconda/envs 下看到pyenv 或者 conda info --envs 查看罗列虚拟环境 2.第二步:打包环境 conda pack -n pyenv -o /xxxxx/pyenv.tar.gz 报错: Collecting packages... CondaPackError:  F

    2024年02月13日
    浏览(23)
  • 【Linux】symbol lookup error: undefined symbol + nm指令定位错误

    一、undefined symbol错误 今天在运行模块执行文件时,出现了如下报错 \\\"symbol lookup error\\\"、\\\"undefined symbol\\\",提示 cos_getfile_mcd 可执行文件在加载 .so 文件时,出现了无法找到符号的错误,并给出了具体错误:_ZN20CCosGetfileTimerInfoC2Ev 符号未定义。 那么如何定位该错误呢?一般可以先

    2024年02月08日
    浏览(24)
  • Conda虚拟环境创建

    我们在做开发时可能会同时开发多个项目,这些项目可能会依赖于不同的python环境,比如有的用到3.6有的用到3.7,这时我们创建不同版本的python,放到虚拟环境中给不同的项目分别提供其所需要的版本,这样可以将各项目所用的环境隔离开不会相互影响。就算多个项目使用同

    2023年04月09日
    浏览(29)
  • conda创建虚拟环境

    创建虚拟环境是在计算机上设置一个独立的空间,用于安装和运行特定版本的软件和依赖项, 以避免与系统其他部分的冲突。 创建虚拟环境 : 这将创建一个名为 myenv 的虚拟环境,并安装Python 3.8版本。 激活虚拟环境 : 这将激活名为 myenv 的虚拟环境。 停用虚拟环境 : 列出

    2024年02月12日
    浏览(30)
  • conda虚拟环境配置

    直接官网下载 Anaconda官网 可以直接在anaconda软件上添加 还可以通过命令行指令,打开终端输入conda create -n 名字 python=3.7 在终端先进入刚刚配置好的虚拟环境,输入conda activate 虚拟环境名字 输入conda install 包名 即可进行虚拟环境的相关配置

    2024年02月05日
    浏览(23)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包