【问题标题】:specifed architecture type (arm) for file does not match it's cputype (7) and cpusubtype (3)文件的指定架构类型 (arm) 与其 cpu 类型 (7) 和 cpu 子类型 (3) 不匹配
【发布时间】:2010-07-19 13:35:07
【问题描述】:

我尝试将 openLdap 用于我目前正在开发的 iphone 应用程序。为了编译 openLdap,我使用了来自link text 的 fat_build.sh。我也在使用 Simulator 3.1.3 和 OS X 10.6.0 进行开发。但是在最后一步

$DEVROOT/usr/bin/lipo -arch arm lnsout/$LIBLDAP_NAME_static.arm -arch i386 lnsout/$LIBLDAP_NAME_static.i386 -create -output lnsout/$LIBLDAP_NAME_static $DEVROOT/usr/bin/lipo -arch arm lnsout/$LIBLBER_NAME_static.arm -arch i386 lnsout/$LIBLBER_NAME_static.i386 -create -output lnsout/$LIBLBER_NAME_static

我收到以下错误:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo:文件(lnsout/libldap.a.arm)的指定架构类型(arm)与它的cputype(7)和cpusubtype(3)不匹配(应该是cputype (12) 和 cpusubtype (0)) /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo:文件(lnsout/liblber.a.arm)的指定架构类型(arm)与它的cputype(7)和cpusubtype(3)不匹配(应该是cputype (12) 和 cpusubtype (0))

我尝试通过设置标题搜索路径、库搜索路径和链接器标志来修复它,但没有结果。

所以如果你有任何想法我可以如何解决这个问题,请告诉我!

【问题讨论】:

  • 你确定 lnsout/libldap.a.arm 是 ARM 架构吗?错误说它是 i386。
  • 在不了解其他构建步骤的情况下,很难知道问题出在哪里。
  • 好吧,我希望如此。在我的 lnsout 文件中,我有一个 libldap.a.arm 和一个 libldap.a.i386 文件。你可以在这里看到我正在使用的构建文件:github.com/rhussmann/RHLDAPSearch/blob/master/util/…

标签: iphone arm openldap


【解决方案1】:

我在为 iPhone 构建 libssh2 时遇到了类似的错误,经过大量搜索后,我意识到我的 .arm 构建实际上是为 i386(我的 MacBook Pro)构建的。

我什至为 ARMv6(设备)、i386(计算机)和 x86_64(模拟器)编译 libssh2,只是为了确保每个版本都能正确构建。然后我使用 lipo 结合了 arm 和 x86_64 架构。我在我的笔记中有一个加星标的评论,“'make clean' 和 'make distclean' 是你的朋友”,所以也许如果你先为你的机器构建库,当你为 iPhone 构建库时,它仍然有配置文件.

我使用命令“lipo -info libldap.a.arm”和“file libldap.a.arm”(针对您的文件名进行了修改)来查看有关构建类型的更多信息。仅供参考,一旦构建正确,这些命令就会显示架构“arm”和“x86_64”。

我注意到的最后一件事——上述 github 链接中的代码实际上包含 libldap.a 和 liblber.a 的预编译通用二进制文件。在搞砸了构建库之后,我注意到了这一点,并将这两个文件与 ldap.h 文件一起使用,我很高兴。

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多