自制软件 + opencv + libpng 出错
Posted
技术标签:
【中文标题】自制软件 + opencv + libpng 出错【英文标题】:Error with homebrew + opencv + libpng 【发布时间】:2015-03-23 08:17:19 【问题描述】:在 Mac OS Maverick 上,我安装了带有 brew install opencv
的 OpenCV。
我创建了一个简单的程序(复制自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
有什么想法吗?
【问题讨论】:
为什么要投反对票? 【参考方案1】:最好的解决方案是完全卸载 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】:Homebrew 应该确保您安装了正确的依赖项。但是,您可能在不同的路径上安装了多个版本的libpng16
。看看...
/usr/lib
/opt/local/lib
如果您在这些位置找到任何版本的库,那么它们可能会导致在您的程序启动时加载错误的版本。作为快速修复,您可以尝试在命令行上的程序名称前输入DYLD_LIBRARY_PATH=/usr/local/lib
。从长远来看,您可能需要完全删除冲突的版本。
【讨论】:
我的/usr/local/Cellar/libpng
文件夹中有多个版本的libpng16
(但在/usr/lib
或/opt/local/lib
中没有)。 /usr/locale/lib
中的那个(显然是由 dylib 加载的)是/usr/local/Cellar/libpng/1.6.16
中最新版本的符号链接)。所以它看起来对我来说是正确的,不是吗?
如果其他地方没有其他版本,那么它看起来不像是版本冲突。看来您需要更新版本的libpng
。我原以为 Homebrew 会安装正确的依赖项
你是对的。我刚刚下载、构建并安装了最新版本的libpng
,它现在可以正常工作了。谢谢。
刚刚有相同的更新brew update && brew upgrade libpng
为我工作。从libpng.1.6.15
升级到libpng.1.6.16
我的问题也与opencv 相关。
删除brew的libpng,下载源码编译成功【参考方案3】:
此答案适用于通过 Conda 安装的 OSX 用户,更具体地说是 conda-forge 频道(我不确定其他人)。
Conda 最终会在环境中安装自己的 libpng,您可以使用 conda upgrade libpng
对其进行更新。
我猜这基本上是 conda-forge 上的 opencv 配方的一个错误。
【讨论】:
以上是关于自制软件 + opencv + libpng 出错的主要内容,如果未能解决你的问题,请参考以下文章
使用自制软件在 Mac OS X 10.9 中构建 OpenCV_Python
OSX + homebrew + CMake + libpng 版本不匹配问题
Android:删除 OpenCV 旧版本将解决 Libpng 漏洞警告?
官方 AnacondaRecipes/opencv-feedstock 的 conda-build 无法查找 libpng.h