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

系统存在多个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

大家好,我是讯享网,很高兴认识大家。

今天运行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

[----------] 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命令看看动态库依赖关系,更有助于找到问题的根本原因。

小讯
上一篇 2025-01-28 17:01
下一篇 2025-03-23 15:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45195.html