自制软件 + opencv + libpng 出错
Error with homebrew + opencv + libpng
在 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
returns:
/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
有什么想法吗?
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 频道(我不确定其他频道)。
Conda 最终会在环境中安装自己的 libpng,您可以使用 conda upgrade libpng
更新它。
我想这基本上是 conda-forge 上 opencv 配方的一个错误。
在 Mac OS Maverick 我已经用 brew install 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
returns:
/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
有什么想法吗?
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 频道(我不确定其他频道)。
Conda 最终会在环境中安装自己的 libpng,您可以使用 conda upgrade libpng
更新它。
我想这基本上是 conda-forge 上 opencv 配方的一个错误。