Snow Leopard 上的 dylib “文件不是必需的架构”

Posted

技术标签:

【中文标题】Snow Leopard 上的 dylib “文件不是必需的架构”【英文标题】:dylib on Snow Leopard "file is not of required architecture" 【发布时间】:2010-02-24 00:51:16 【问题描述】:

我已经在雪豹上编译了opencv,它说它编译正确,但是当我尝试针对它编译我的示例程序时,我得到如下输出:

g++ -o tm_scons template.o -L/opencv/opencv/build/lib -lcxcore -lcv -lcvaux -lhighgui -lml
ld: warning: in /opencv/opencv/build/lib/libcxcore.dylib, file is not of required architecture
ld: warning: in /opencv/opencv/build/lib/libcv.dylib, file is not of required architecture
ld: warning: in /opencv/opencv/build/lib/libcvaux.dylib, file is not of required architecture
ld: warning: in /opencv/opencv/build/lib/libhighgui.dylib, file is not of required architecture
ld: warning: in /opencv/opencv/build/lib/libml.dylib, file is not of required architecture

这可能是我编译 OpenCV 或使用它的应用程序的问题吗?

【问题讨论】:

【参考方案1】:

正确编译并不意味着针对您现在尝试编译的任何架构进行编译。该库很可能被编译为 32 位,而您正在编译为 64 位,反之亦然。

【讨论】:

你知道调整opencv编译步骤告诉它编译为64位的简单方法吗? (我认为这是问题所在?)。 您可以使用 lipo 命令验证您的库的架构。 (lipo -info /path/to/library) 我认为“文件”也会给你这些信息。【参考方案2】:

您的程序很可能是 64 位编译的(SnowLeopard 上的默认行为),而库是 32 位编译的。尝试在构建程序时将-m32-arch i386 标志添加到编译器并查看链接是否有效。

【讨论】:

【参考方案3】:

事实证明,神奇的是使用 -m32 并切换到 /usr/bin/g++-4.0 编译器。

呃……

【讨论】:

以上是关于Snow Leopard 上的 dylib “文件不是必需的架构”的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX Snow Leopard 上的 Oracle Sqlplus 问题

用于Snow Leopard上的mercurial的GUI

如何删除或停用 Snow Leopard 上的默认 apache2 服务器?

Mac OS X Snow Leopard 上的 MOD_WSGI 困难

Snow Leopard Automator:尝试创建用于转换 Excel 文件的工作流程

iPhone SDK 4 仅适用于 Mac OS X Snow Leopard?