【问题标题】:dylib on Snow Leopard "file is not of required architecture"Snow Leopard 上的 dylib “文件不是必需的架构”
【发布时间】: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 或使用它的应用程序的问题吗?

【问题讨论】:

    标签: c++ macos 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 编译器。

      呃……

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        相关资源
        最近更新 更多