系统存在多个opencv库导致的caffe运行异常:undefined symbol imencode imread

今天运行faster rcnn demo的时候居然出错了:

guyadong@gyd-u16:~/tmp/py-faster-rcnn$ tools/demo.py Traceback (most recent call last): File “tools/demo.py”, line 18, in from fast_rcnn.test import im_detect File “/home/guyadong/tmp/py-faster-rcnn/tools/../lib/fast_rcnn/test.py”, line 16, in import caffe File “/home/guyadong/tmp/py-faster-rcnn/tools/../caffe-fast-rcnn/python/caffe/init.py”, line 1, in from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File “/home/guyadong/tmp/py-faster-rcnn/tools/../caffe-fast-rcnn/python/caffe/pycaffe.py”, line 13, in from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ ImportError: /home/guyadong/tmp/py-faster-rcnn/caffe-fast-rcnn/lib/libcaffe.so.1.0.0-rc5: undefined symbol: ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS 11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE guyadong@gyd-u16:~/tmp/py-faster-rcnn$ strings /home/guyadong/tmp/py-faster-rcnn/caffe-fast-rcnn/lib/libcaffe.so.1.0.0-rc5 |grep imencode ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS 11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS 11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE

根据提示信息,应该是找不到imencode这个函数。 运行caffe的test (make runtest)也同样报错,只是这次是找不到im_read函数。

[———-] 5 tests from ImageDataLayerTest/2, where TypeParam = caffe::GPUDevice [ RUN ] ImageDataLayerTest/2.TestResize /home/guyadong/caffe/caffe-master/build/test/test.testbin: symbol lookup error: /home/guyadong/caffe/caffe-master/build/lib/libcaffe.so.1.0.0-rc3: undefined symbol: _ZN2cv6imreadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi src/caffe/test/CMakeFiles/runtest.dir/build.make:57: recipe for target ‘src/caffe/test/CMakeFiles/runtest’ failed make[3]: * [src/caffe/test/CMakeFiles/runtest] Error 127 CMakeFiles/Makefile2:328: recipe for target ‘src/caffe/test/CMakeFiles/runtest.dir/all’ failed make[2]: * [src/caffe/test/CMakeFiles/runtest.dir/all] Error 2 CMakeFiles/Makefile2:335: recipe for target ‘src/caffe/test/CMakeFiles/runtest.dir/rule’ failed make[1]: * [src/caffe/test/CMakeFiles/runtest.dir/rule] Error 2 Makefile:240: recipe for target ‘runtest’ failed make: * [runtest] Error 2

imencode,imread都是OpenCV的函数,但是opencv明明已经正确安装了啊,而且前几天faster rcnn已经安装运行成功并且训练了自己的模型,demo程序更是没问题,没道理啊。 用google搜索找了半天,尝试了搜索上的各种办法都无效,最后想到用ldd命令列出libcaffe.so.1.0.0-rc5依赖的动态库,发现了问题,如下图:

原来我使用的另一个第三方程序cassdk中自带了opencv动态库,而且它在LD_LIBRARY_PATH的优先级更高,所以libcaffe.so.1.0.0-rc5在运行时使用了cassdk下的opencv库,而不是我apt-get安装的opencv库。

果断卸载了这个程序,再用ldd命令查看,这下依赖关系正常了。

再运行py-faster-rcnn/tools/demo.py则一切正常。

总结 遇到这种undefined symbol的问题,先别急着重装对应的库,用ldd命令看看动态库依赖关系,更有助于找到问题的根本原因。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

Embulk--异构数据库和文件系统处理神器

Embulk是一款开源的批处理框架,它主要用于异构数据库,文件存储以及云服务之间的数据传输工具。特色:

591
来自专栏iKcamp

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层

视频地址:https://www.cctalk.com/v/15114923889408 文章 在前面几节中,我们已经实现了项目中的几个常见操作:启动服务器、路...

3086
来自专栏张善友的专栏

开发人员应该知道Windows 7的十大技巧

最近我在笔记本上安装了64位的Windows 7,今天逛的时候看到Scott Hanselman’s 写的一篇文章Top 10 Tips Working Dev...

1675
来自专栏FreeBuf

渗透测试系统BackBox Linux 4.1发布

BackBox是基于Ubuntu的Linux发行版,它是一款用于网络渗透测试及安全评估的操作系统。新版本包括Linux 3.13内核,EFI 模式,匿名模式,L...

1625
来自专栏施炯的IoT开发专栏

Windows 10 IoT Core 17120 for Insider 版本更新

今天,微软发布了Windows 10 IoT Core 17120 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性。相比于171...

32310
来自专栏前端黑板报

几款Chrome插件

Auto Copy 它的功用是即选即拷,可以选择不带格式的copy,对需要经常从网页上拷贝字词到world里的人来说很方便。 ? Vimium 熟悉Vim命令...

2257
来自专栏格子的个人博客

Jenkins系列一:安装和简单配置Jenkins简单介绍Jenkins安装

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

651
来自专栏battcn

一起来学SpringBoot | 第十五篇:actuator与spring-boot-admin 可以说的秘密

一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了 actuator 的作用,细心的朋友可能会发现通过 http r...

852
来自专栏蔡鹏的专栏

【腾讯云的1001种玩法】安卓加固在腾讯云上的使用(附反编译结果)

移动安全不容小觑,加一层防护多一份保障,腾讯云上有一个叫乐固的服务,支持反破解,反调试,反窃取,防篡改,防二次打包, 兼容2.x至 7.x 任何安卓系统,,兼容...

1.5K0
来自专栏iKcamp

iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 代码分层

视频地址:https://www.cctalk.com/v/15114923889408

760

扫码关注云+社区