Ошибка с 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.

Другие вопросы по тегам