马春杰杰 Exit Reader Mode

[mcj]Ubuntu安装OpenCV出现../../lib/libopencv_imgcodecs.so.3.4.5:对’png_set_longjmp_fn’未定义的引用

莫名其妙的OpenCV就不能用了,只能重新编译,编译过程中出现错误:

[ 35%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/src/layers/resize_layer.cpp.o
../../lib/libopencv_imgcodecs.so.3.4.5\uff1a\u5bf9\u2018png_set_longjmp_fn\u2019\u672a\u5b9a\u4e49\u7684\u5f15\u7528
collect2: error: ld returned 1 exit status
modules/fuzzy/CMakeFiles/example_fuzzy_fuzzy_filtering.dir/build.make:100: recipe for target 'bin/example_fuzzy_fuzzy_filtering' failed
make[2]: *** [bin/example_fuzzy_fuzzy_filtering] Error 1
CMakeFiles/Makefile2:6891: recipe for target 'modules/fuzzy/CMakeFiles/example_fuzzy_fuzzy_filtering.dir/all' failed
make[1]: *** [modules/fuzzy/CMakeFiles/example_fuzzy_fuzzy_filtering.dir/all] Error 2
make[1]: *** \u6b63\u5728\u7b49\u5f85\u672a\u5b8c\u6210\u7684\u4efb\u52a1....
在之前经过命令‘apt-get install libpng-dev‘装过libpng库,于是下载源码libpng-1.6.27编译,装置,但是问题照旧。百度谷歌,有人说是系统默许的libpng库版本太旧的问题,不包含png_set_longjmp_fn那个函数,我到/usr/include文件夹查看了下png.h,发现确实没有png_set_longjmp_fn函数的原型,但是libpng-1.6.27文件夹下的png.h包含png_set_longjmp_fn函数的原型,为什么编译源码后装置没有将头文件装置到/usr/include文件夹下,这个还没搞分明。

解决方法:

sudo apt-get install libpng16-dev

安装最新的libpng库,问题得到解决。

本文最后更新于2022年1月15日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!