2015-01-24 2 views
7

В Mac OS Maverick я установил OpenCV с brew install opencv.Ошибка с homebrew + opencv + libpng

Я создал простую программу (скопировал с this tutorial). Компиляция работала нормально, но при запуске исполняемого файла, я получаю следующее сообщение об ошибке:

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 

Любая идея?

+0

Зачем нужен downvote, пожалуйста? – fiddler

ответ

2

Homebrew должен обеспечить правильную установку зависимостей. Однако возможно, что у вас более одной версии libpng16, установленной на разных путях. Посмотрите в ...

/usr/lib 
/opt/local/lib 

Если вы нашли какую-либо версию библиотеки в этих местах, то они могут быть причиной неправильной должны быть загружены при запуске программы. В качестве быстрого исправления вы можете попробовать ввести DYLD_LIBRARY_PATH=/usr/local/lib перед вашим именем программы в командной строке. В долгосрочной перспективе вам может потребоваться полностью удалить конфликтующие версии.

+1

Существует несколько версий 'libpng16' в моей папке'/usr/local/Cellar/libpng' (но не в '/ usr/lib' или'/opt/local/lib'). И тот, что находится в '/ usr/locale/lib' (который, очевидно, загружен dylib), символически привязан к последней версии в'/usr/local/Cellar/libpng/1.6.16'). Так что это выглядит правильно для меня, не так ли? – fiddler

+1

Если в другом месте нет другой версии, это не похоже на конфликт версий. Кажется, вам нужна более новая версия 'libpng'. Я бы подумал, что Homebrew установил правильные зависимости, хотя – gmbeard

+1

Вы правы. Я только что загрузил, создал и установил последнюю версию 'libpng', и теперь он отлично работает. Благодарю. – fiddler

4

Лучшее решение для полного удаления 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 
2

Этот ответ для пользователей OSX, установивших через Конда, более конкретно, конда-канальный канал (я не уверен в других).

Conda завершает установку собственного libpng в среде, и вы можете обновить его с помощью conda upgrade libpng.

Я предполагаю, что это в основном ошибка с рецептом opencv на conda-forge.

Смежные вопросы