Ошибка с homebrew + opencv + libpng
На Mac OS Maverick я установил OpenCV с brew install opencv
,
Я создал простую программу (скопирован из этого урока). Компиляция работала нормально, но при запуске исполняемого файла я получаю следующую ошибку:
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
Я проверил это libpng
был правильно установлен через brew install libpng
и побежал brew upgrade
чтобы убедиться, что все было в курсе.
Бег locate libpng16.dylib
возвращает:
/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
Любая идея?
3 ответа
Homebrew должен убедиться, что вы установили правильные зависимости. Однако возможно, что у вас более одной версии libpng16
установлены на разных путях. Загляни в...
/usr/lib
/opt/local/lib
Если вы обнаружите какие-либо версии библиотеки в этих местах, это может привести к загрузке неверной версии при запуске вашей программы. В качестве быстрого решения вы можете попробовать набрать DYLD_LIBRARY_PATH=/usr/local/lib
перед именем вашей программы в командной строке. В более долгосрочной перспективе вам может понадобиться удалить конфликтующие версии в целом.
Лучшее решение - полностью удалить libpng и переустановить его:
$ 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
Если вам нужно установить opencv:
$ sudo brew tap homebrew/science
$ sudo brew install opencv
Этот ответ предназначен для пользователей OSX, которые установили через Conda, в частности, канал conda-forge (я не уверен насчет других).
Конда заканчивает тем, что установил свой собственный libpng в среде, и вы можете обновить его с помощью conda upgrade libpng
,
Я предполагаю, что это в основном ошибка с рецептом opencv на conda-forge.