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 上的默认 apache2 服务器?
Mac OS X Snow Leopard 上的 MOD_WSGI 困难