简体   繁体   中英

Error with homebrew + opencv + libpng

On Mac OS Maverick I have installed OpenCV with a brew install opencv .

I created a simple program (copied from this tutorial ). Compilation worked fine but when running the executable I get the following error:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib
  Referenced from: /usr/local/lib/libopencv_highgui.2.4.dylib
  Reason: Incompatible library version: libopencv_highgui.2.4.dylib requires version 33.0.0 or later, but libpng16.16.dylib provides version 32.0.0
Trace/BPT trap: 5

I checked that libpng was properly installed via brew install libpng and ran a brew upgrade to make sure everything was up-to-date.

Running locate libpng16.dylib returns:

/Applications/GIMP.app/Contents/Resources/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.10/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.12/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.13/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.15/lib/libpng16.16.dylib
/usr/local/lib/libpng16.16.dylib

Any idea?

The best solution is to fully uninstall libpng and re-install it:

$ sudo brew uninstall libpng
$ sudo rm '/usr/local/bin/libpng-config'
$ for i in `brew link --overwrite --dry-run libpng`; do sudo rm $i; done
$ sudo brew install libpng

If you need to install opencv:

$ sudo brew tap homebrew/science
$ sudo brew install opencv

Homebrew should ensure that you the correct dependencies install. However, it's possible that you have more than one version of libpng16 installed at different paths. Have a look in...

/usr/lib
/opt/local/lib

If you find any versions of the library in these locations then they may be causing the wrong one to be loaded when your program starts. As a quick fix you can try typing DYLD_LIBRARY_PATH=/usr/local/lib before your program name on the command line. In the longer term you may need to remove the conflicting versions altogether.

This answer is for OSX users who installed through Conda, more specifically the conda-forge channel (I'm not sure about others).

Conda ends up installing its own libpng in the environment and you can update it with conda upgrade libpng .

I guess this is basically a bug with the opencv recipe on conda-forge.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM