我尝试将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: specifed architecture type (arm) for file (lnsout/libldap.a.arm) does not match it's cputype (7) and cpusubtype (3) (should be cputype (12) and cpusubtype (0)) /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo: specifed architecture type (arm) for file (lnsout/liblber.a.arm) does not match it's cputype (7) and cpusubtype (3) (should be cputype (12) and cpusubtype (0))
我尝试通过设置页眉搜索路径,库搜索路径和链接器标志来修复它而没有结果。
所以如果您有任何想法我可以解决这个问题,请告诉我!
答案 0 :(得分: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文件一起使用,我很高兴。