首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCv中的"mach-o,但架构错误“(豹)

OpenCv中的"mach-o,但架构错误“(豹)
EN

Stack Overflow用户
提问于 2012-05-21 00:47:58
回答 1查看 5.6K关注 0票数 4

我已经用CMake从这个doc安装了OpenCV。我的~/.profile文件是:

代码语言:javascript
复制
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export ARCHFLAGS="-arch i386 -arch x86_64"
export ARCHFLAGS="-arch i386" 
export VERSIONER_PYTHON_PREFER_64_BIT=yes
export VERSIONER_PYTHON_PREFER_32_BIT=no
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PYTHONPATH=/Library/Python/2.6/site-packages:$PYTHONPATH    
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib

使用import cv时,我会遇到这样的错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: dlopen(/usr/local/lib/python2.6/site-packages/cv2.so, 2): no suitable image found.  Did find:
    /usr/local/lib/python2.6/site-packages/cv2.so: mach-o, but wrong architecture

我的python架构:

代码语言:javascript
复制
file "$( "$(which python)" -c "import sys;print(sys.executable)" )"
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

我已经阅读并运行了堆栈溢出中关于OpenCV和豹的所有答案,但仍然在错误之上。任何关于这方面的帮助都将不胜感激。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 17:53:03

豹(和雪豹)是一个杂交品种,它包含两个二进制:32位和64位...它把它们混合在一起。这是一场噩梦。据我所知,你不能在同一个运行的程序中混合使用32位和64位的库。

我使用过这个技巧:How to force /usr/bin/gcc -> /usr/bin/gcc -m32?

它使得一切都可以在i386中编译(3月32位)。您也可以将其强制为64 (不推荐)。它还修复了许多其他的编译问题。记住,这是一个黑客攻击。

备份/usr/bin/,执行hack,编译open cv并删除hack。

另一个解决方案是升级到lion,到目前为止,lion似乎没有32/64位的问题。

有用的命令还包括:

代码语言:javascript
复制
lipo -info /usr/local/lib/python2.6/site-packages/cv2.so
arch -i386 /usr/bin/python

Lipo检查共享对象和后来的How do I force Python to be 32-bit on Snow Leopard and other 32-bit/64-bit questions的体系结构。也许你可以通过强制python到与cv2相同的拱门来修复这个问题……

编辑

我注意到您使用的是macport cv2和apple python。在运行代码时尝试使用/opt/local/bin/python2.6

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10675298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档