undefined reference to `png_set_longjmp_fn'

/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&)':
grfmt_png.cpp:(.text._ZN2cv10PngEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0xf5): undefined reference to `png_set_longjmp_fn'
/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngDecoder::readData(cv::Mat&)':
grfmt_png.cpp:(.text._ZN2cv10PngDecoder8readDataERNS_3MatE+0xf4): undefined reference to `png_set_longjmp_fn'
/home/wangpan/work/gitnew/opencv_demo/opencv-3.4.2/linux/lib/libopencv_imgcodecs.a(grfmt_png.cpp.o): In function `cv::PngDecoder::readHeader()':
grfmt_png.cpp:(.text._ZN2cv10PngDecoder10readHeaderEv+0x1e5): undefined reference to `png_set_longjmp_fn'

 

网上查资料,(https://www.cnblogs.com/adong7639/p/7694755.html)说是libpng版本比较低。

看了下我的电脑,

wangpan@wangpan-OptiPlex-7050:/lib/x86_64-linux-gnu$ ll | grep png
lrwxrwxrwx  1 root root      18 2月   5 16:54 libpng12.so.0 -> libpng12.so.0.54.0
-rw-r--r--  1 root root  149904 7月  11  2018 libpng12.so.0.54.0
lrwxrwxrwx  1 root root      19 2月  18  2016 libpng16.so.16 -> libpng16.so.16.20.0
-rw-r--r--  1 root root  199040 2月  18  2016 libpng16.so.16.20.0

wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r--   1 root root    243746 7月  11  2018 libpng12.a
lrwxrwxrwx   1 root root        13 7月  11  2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx   1 root root        35 7月  11  2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx   1 root root        36 2月  18  2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx   1 root root        10 7月  11  2018 libpng.a -> libpng12.a
lrwxrwxrwx   1 root root        11 7月  11  2018 libpng.so -> libpng12.so

可以看出,现在用的libpng是libpng12.so。

解决方法:

1,创建一个软链接libpng16.so指向libpng16.so.16

wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo ln -s libpng16.so.16 libpng16.so

wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r--   1 root root    243746 7月  11  2018 libpng12.a
lrwxrwxrwx   1 root root        13 7月  11  2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx   1 root root        35 7月  11  2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx   1 root root        14 2月   5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx   1 root root        36 2月  18  2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx   1 root root        10 7月  11  2018 libpng.a -> libpng12.a
lrwxrwxrwx   1 root root        11 7月  11  2018 libpng.so -> libpng12.so

2,删除之前的软链接libpng.so

wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo rm -rf libpng.so 
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll | grep png
-rw-r--r--   1 root root    243746 7月  11  2018 libpng12.a
lrwxrwxrwx   1 root root        13 7月  11  2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx   1 root root        35 7月  11  2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx   1 root root        14 2月   5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx   1 root root        36 2月  18  2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx   1 root root        10 7月  11  2018 libpng.a -> libpng12.a

3,创建一个新的软链接libpng.so指向libpng16.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ sudo ln -s libpng16.so libpng.so
wangpan@wangpan-OptiPlex-7050:/usr/lib/x86_64-linux-gnu$ ll |grep png
-rw-r--r--   1 root root    243746 7月  11  2018 libpng12.a
lrwxrwxrwx   1 root root        13 7月  11  2018 libpng12.so -> libpng12.so.0
lrwxrwxrwx   1 root root        35 7月  11  2018 libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0
lrwxrwxrwx   1 root root        14 2月   5 17:03 libpng16.so -> libpng16.so.16
lrwxrwxrwx   1 root root        36 2月  18  2016 libpng16.so.16 -> /lib/x86_64-linux-gnu/libpng16.so.16
lrwxrwxrwx   1 root root        10 7月  11  2018 libpng.a -> libpng12.a
lrwxrwxrwx   1 root root        11 2月   5 17:04 libpng.so -> libpng16.so

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值