2015-01-24 13 views
7

Su Mac OS Maverick ho installato OpenCV con un brew install opencv.Errore con homebrew + opencv + libpng

Ho creato un programma semplice (copiato da this tutorial). Compilazione ha funzionato bene, ma quando si esegue l'eseguibile ottengo il seguente errore:

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 

ho controllato che libpng è stato installato correttamente tramite brew install libpng e si passò una brew upgrade per assicurarsi che tutto era up-to-date.

corso locate libpng16.dylib rendimenti:

/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 

qualche idea?

+0

Perché il downvote, per favore? – fiddler

risposta

2

Homebrew dovrebbe garantire l'installazione delle dipendenze corrette. Tuttavia, è possibile che sia stata installata più di una versione di libpng16 in percorsi diversi. Date un'occhiata a ...

/usr/lib 
/opt/local/lib 

Se trovate qualunque versioni della libreria in questi luoghi allora possono essere la causa quella sbagliata da caricare quando il programma si avvia. Come soluzione rapida puoi provare a digitare DYLD_LIBRARY_PATH=/usr/local/lib prima del nome del programma sulla riga di comando. A lungo termine potrebbe essere necessario rimuovere del tutto le versioni in conflitto.

+1

Ci sono diverse versioni di 'libpng16' nella mia cartella'/usr/local/Cellar/libpng' (ma nessuna in/usr/lib' o '/ opt/local/lib'). E quello in '/ usr/locale/lib' (che è ovviamente caricato da dylib) è un link simbolico all'ultima versione in/usr/local/Cellar/libpng/1.6.16'). Quindi sembra corretto per me, non è vero? – fiddler

+1

Se non ci sono altre versioni altrove, non sembra un conflitto di versione. Sembra che tu abbia bisogno di una versione più recente di 'libpng'. Avrei pensato che Homebrew avrebbe installato le dipendenze corrette anche se – gmbeard

+1

Hai ragione. Ho appena scaricato, costruito e installato l'ultima versione di 'libpng' e ora funziona bene. Grazie. – fiddler

4

La soluzione migliore è quella di disinstallare completamente libpng e ri-installarlo:

$ 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 

Se è necessario installare OpenCV:

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

Questa risposta è per gli utenti OSX che hanno installato attraverso Conda, in particolare il canale conda-forge (non sono sicuro degli altri).

Conda finisce per installare il proprio libpng nell'ambiente ed è possibile aggiornarlo con conda upgrade libpng.

Immagino che questo sia fondamentalmente un bug con la ricetta di opencv su conda-forge.

Problemi correlati