2015-01-24 3 views
7

Mac OS에서 Macadick에서 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

자필은 올바른 종속성을 설치해야합니다. 그러나 다른 경로에 libpng16 버전이 두 개 이상 설치되어있을 수 있습니다. 에서 보라 ...

/usr/lib 
/opt/local/lib 

그런 다음 그들은 당신의 프로그램이 시작할 때로드 할 잘못된 원인이 될 수있다 이러한 위치에있는 라이브러리의 버전을 찾을 경우. 빠른 수정으로 명령 줄에서 프로그램 이름 앞에 DYLD_LIBRARY_PATH=/usr/local/lib을 입력 해보십시오. 장기적으로 충돌 버전을 모두 제거해야 할 수도 있습니다.

+1

'/ usr/local/Cellar/libpng' 폴더에는 여러 버전의'libpng16'이 있습니다 (그러나'/ usr/lib' 또는'/ opt/local/lib'에는 없습니다). '/ usr/local/Cellar/libpng/1.6.16'에있는 최신 버전에 대한 심볼릭 링크는'/ usr/locale/lib' (분명히 dylib에 의해로드 됨)에 있습니다. 그래서 나에게 맞는 것 같은가요? – 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의 :

이 대답은 CONDA 통해 설치 OSX 사용자를위한 것입니다
$ sudo brew tap homebrew/science 
$ sudo brew install opencv 
2

, 더 구체적으로 conda-forge 채널 (다른 사람들에 대해서는 잘 모르겠다).

Conda가 환경에 자체 libpng 설치를 끝내고 conda upgrade libpng으로 업데이트 할 수 있습니다.

이것은 기본적으로 conda-forge에서 opencv 제조법의 버그라고 생각합니다.