Mac OS 上“导入 cv”期间的“分段错误”
Posted
技术标签:
【中文标题】Mac OS 上“导入 cv”期间的“分段错误”【英文标题】:"Segmentation fault" during "import cv" on Mac OS 【发布时间】:2011-07-11 15:58:39 【问题描述】:尝试在我的 Mac 上从源代码编译 opencv。
我有以下 CMakeCache.txt: http://pastebin.com/KqPHjBx0
我创建ccmake ..
,按c
,然后按g
。
比我做的sudo make -j8
:
http://pastebin.com/cJyr1cEd
比我做的sudo make install
:
http://pastebin.com/W77syYBj
然后我在 python 中创建import cv
并使用此堆栈跟踪得到“分段错误”:
http://pastebin.com/gegYAK1u
我不知道有什么可以帮助我,请。问问,我会的。
【问题讨论】:
嘿,你是如何创建堆栈跟踪的? 【参考方案1】:从您的日志来看,您似乎使用的是 MacPorts 和 python 2.6。
opencv
将在此框架上正常编译:
sudo port install opencv +python26
一定要安装py26-numpy
以支持cv.fromarray
等基本功能:
sudo port install py26-numpy
表示您的问题已被 MacPorts 社区解决。是最新源的问题吗?你编译的版本是macports使用的版本(opencv 2.2.0)。
您的问题是关于从源代码编译。查看链接到的端口文件,您将能够找到您的问题。要找到 Portfile,请执行以下操作:
port file opencv
或直接
sudo port edit opencv
这将列出工作 openCV 所需的所有配置标志。
【讨论】:
我已经尝试了不同的变体,其中许多都以不同的结果失败了。我现在的系统很乱。 ---- 我已经安装了 python_select。它有 python26 的 2 个变体:python26-apple 和 python26。如果 -apple one 选择了我在这篇文章中描述的情况。 --- 选择了第二个我有这个pastebin.com/ve7wjFy5。 --- 以下是 python26 具有的导入路径:pastebin.com/1kggWJZB Python26-apple 具有:pastebin.com/eDmXfpgg 以防万一 - 这里我在 /opt/ 下提到了 opencv:pastebin.com/Qij5kuFt --- 这是我已经拥有 cv.so 的地方:pastebin.com/Di8MvSJj【参考方案2】:我有同样的情况并解决了以下步骤。
在 ccmake(ccmake -G "Unix Makefiles" .
) 中,按t
切换到高级模式。
将PYTHON_LIBRARY
的值更改为/opt/local/lib/libpython2.6.dylib
,将PYTHON_INCLUDE_DIR
更改为/opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6
。
请注意,具体路径当然取决于您使用的 Python 版本(2.6 或 2.7 等)。此外,如果您使用的是系统 Python,而不是 MacPorts(位于 /opt 中),那么您可能希望 PYTHON_LIBRARY 为 /usr/lib/libpython2.6.dylib强>
【讨论】:
这似乎为我解决了这个问题,即使'make install'
出错了。去图吧。
我有同样的错误,但无法理解这个答案。但是输入 sudo port select --set python python27
为我修复了段错误。
就我而言,我没有 MacPorts Python,而是 python.org Python。我只是重写了/usr/lib/libpython2.7.dylib
的符号链接以指向/Library/Frameworks/Python.framework/Versions/2.7/Python
而不是/System/Library/Frameworks/Python.framework/Versions/2.7/Python
。【参考方案3】:
打字:
sudo port select --set python python27
为我修复了段错误。
【讨论】:
【参考方案4】:问题很简单,macports确实在~/usr/lib中重写了cv.so
如果您使用
安装 OPENCVsudo port install opencv +python26
类型
sudo port select --set python python26
如果您使用 OPENCV 安装了
sudo port install opencv +python27
类型
sudo port select --set python python27
“错误”是 python2.7 解释器试图打开 python2.6 预编译的二进制文件,导致 seg 错误 11(反之亦然)
opencv 最大的问题是它没有源代码,只有二进制文件,这些二进制文件严重依赖于构建于哪个编译器(哪个平台等)
【讨论】:
以上是关于Mac OS 上“导入 cv”期间的“分段错误”的主要内容,如果未能解决你的问题,请参考以下文章
ejabber 的 erl 文件在 mac os 10.7.5 上运行时给出错误“分段错误:11”
C++ 服务器 Linux 机器上的分段错误 - 适用于 Mac