Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 libpngwas 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?

like image 906
sdabet Avatar asked Jan 24 '15 10:01

sdabet


2 Answers

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
like image 100
Fabien Vauchelles Avatar answered Oct 11 '22 03:10

Fabien Vauchelles


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.

like image 30
gmbeard Avatar answered Oct 11 '22 05:10

gmbeard