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

如果您使用

安装 OPENCV
sudo 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”

如何在mac os x上安装 ruby运行环境

C++ 服务器 Linux 机器上的分段错误 - 适用于 Mac

电脑丨部分用户在Mac OS 10.15.4上遇到系统崩溃,尤其是在大文件传输期间!

mac中的glTexParameteri分段错误

分段错误:在 Mac 上为 11,但在 Linux 上没有,同时在 C 中创建数组