0

我尝试将 openLdap 用于我目前正在开发的 iphone 应用程序。要编译 openLdap,我使用的是来自链接文本的 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))

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

因此,如果您对如何解决此问题有任何想法,请告诉我!

4

1 回答 1

2

我在为 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 文件一起使用,我很高兴。

于 2010-09-15T14:11:22.543 回答