2015-01-24 19 views
7

Trên Mac OS Maverick Tôi đã cài đặt OpenCV với brew install opencv.Lỗi với homebrew + opencv + libpng

Tôi đã tạo một chương trình đơn giản (được sao chép từ this tutorial). Compilation làm việc tốt nhưng khi chạy thực thi tôi nhận được lỗi sau:

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 

Tôi đã kiểm tra rằng libpng đã được cài đặt đúng cách qua brew install libpng và chạy một brew upgrade để đảm bảo tất cả mọi thứ đã được cập nhật lên.

Chạy locate libpng16.dylib lợi nhuận:

/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 

Bất kỳ ý tưởng?

+0

Tại sao bạn nên downvote? – fiddler

Trả lời

2

Homebrew phải đảm bảo rằng bạn cài đặt đúng các phụ thuộc. Tuy nhiên, có thể bạn đã cài đặt nhiều phiên bản libpng16 ở các đường dẫn khác nhau. Hãy xem trong ...

/usr/lib 
/opt/local/lib 

Nếu bạn tìm thấy bất kỳ phiên bản nào của thư viện ở những vị trí này thì chúng có thể gây tải sai khi chương trình của bạn bắt đầu. Để khắc phục nhanh, bạn có thể thử gõ DYLD_LIBRARY_PATH=/usr/local/lib trước tên chương trình của bạn trên dòng lệnh. Về lâu dài, bạn có thể cần phải loại bỏ hoàn toàn các phiên bản xung đột.

+1

Có vài phiên bản 'libpng16' trong thư mục'/usr/local/Cellar/libpng' của tôi (nhưng không có trong '/ usr/lib' hoặc'/opt/local/lib'). Và một trong '/ usr/locale/lib' (được rõ ràng bởi dylib) là một liên kết tượng trưng đến phiên bản mới nhất trong'/usr/local/Cellar/libpng/1.6.16'). Vì vậy, nó có vẻ đúng với tôi, phải không? – fiddler

+1

Nếu không có phiên bản nào khác ở nơi khác thì nó không giống như một phiên bản xung đột. Có vẻ như bạn cần phiên bản mới hơn của 'libpng'. Tôi đã nghĩ rằng Homebrew sẽ cài đặt các phụ thuộc chính xác mặc dù – gmbeard

+1

Bạn nói đúng. Tôi vừa mới tải xuống, xây dựng và cài đặt phiên bản mới nhất của 'libpng' và nó hoạt động tốt ngay bây giờ. Cảm ơn. – fiddler

4

Giải pháp tốt nhất là để hoàn toàn gỡ bỏ cài đặt libpng và cài đặt lại nó:

$ 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 

Nếu bạn cần phải cài đặt opencv:

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

Câu trả lời này dành cho người dùng OSX đã cài đặt thông qua Conda, cụ thể hơn là kênh giả mạo (tôi không chắc chắn về những người khác).

Conda kết thúc cài đặt libpng riêng của mình trong môi trường và bạn có thể cập nhật nó bằng conda upgrade libpng.

Tôi đoán đây về cơ bản là lỗi với công thức opencv trên khớp giả.

Các vấn đề liên quan