系统存在多个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 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

python笔记:#002#第一个python程序

第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3​​.x 版本简介 执行 Python 程序的三种方式 ...

2643
来自专栏增长技术

查看历史--Git日志

如果用--stat选项使用git log,它会显示在每个提交(commit)中哪些文件被修改了,这些文件分别添加或删除了多少行内容。

1075
来自专栏哎_小羊

Eclipse(Luna)集成Resin4.0+服务器,以及配置参数

当前,作为比较流行的web服务器,tomcat一直作为首选,然而近几年一个号称最快的Jsp、Servlet服务器——Resin出现了,Resin作为一个新秀We...

18610
来自专栏令仔很忙

手把手教你----使用Nuget管理自己的项目库

官网上的解释:NuGet is the package manager for the Microsoft development platform in...

911
来自专栏C++

python笔记:#002#第一个python程序

954
来自专栏破晓之歌

python+Django+mysql多图,多文件上传(包含admin)

新建app,修改setting.py中的installed_app和静态路径,增加媒体路径

1232
来自专栏calvin

解决linux netcore https请求使用自签名证书忽略安全检查方法

当前系统环境:centos7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValid...

582
来自专栏cs

linux 学习笔记七

来自实验楼的学习笔记,文字基本复制,粘贴。 ? 下载了一个录制gif图的软件,还不错 参考与:在Linux(Ubuntu)下超好用的录屏gif软件!!...

3295
来自专栏mathor

软件破解逆向工程实战(二)

”打补丁“的方法可以修复程序bug,给程序添加新功能,“打补丁”的对象可以是文件、内存、数据、代码......

942
来自专栏晓晨的专栏

.NET Core 配置Configuration杂谈

854

扫码关注云+社区