繁体   English   中英

在Xcode 4.2中建立存档时,Three20相关的clang链接错误

[英]three20 related clang link error when building for archive in Xcode 4.2

构建存档时出现以下错误。 我的应用程序为模拟器构建良好。

Ld "/Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/InstallationBuildProductsLocation/Applications/ProjectName.app/ProjectName" normal armv7
    cd /Users/me/Documents/pn-core-iphone-app
    setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -L/Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/BuildProductsPath/Adhoc_Distro-iphoneos -L/Users/me/Documents/pn-core-iphone-app/External/OAuthConsumer -F/Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/BuildProductsPath/Adhoc_Distro-iphoneos -F/Users/me/Documents/pn-core-iphone-app/External/GHUnit -filelist "/Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/IntermediateBuildFilesPath/ProjectName.build/Adhoc_Distro-iphoneos/app_core.build/Objects-normal/armv7/ProjectName.LinkFileList" -dead_strip -ObjC -liconv.2 -lxml2 -miphoneos-version-min=4.0 /Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/BuildProductsPath/Release-iphoneos/libThree20.a -lThree20Core -lThree20Network -lThree20Style -lThree20UI -lThree20UICommon -lThree20UINavigator -framework Foundation -framework UIKit -framework CoreGraphics -framework CoreLocation -framework SystemConfiguration -framework MapKit -framework CFNetwork -weak_framework AVFoundation -framework MessageUI -framework Security -weak_framework CoreVideo -weak_framework CoreMedia -framework QuartzCore -framework AudioToolbox -framework MobileCoreServices -lz.1.1.3 -weak_framework CoreTelephony -lOAuth -liconv /Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/BuildProductsPath/Release-iphoneos/libZXingWidget.a -framework AddressBook -framework AddressBookUI -o "/Users/me/Library/Developer/Xcode/DerivedData/ProjectName-gflmmwtgzbpnsacgrofxwujnipkm/ArchiveIntermediates/app_core/InstallationBuildProductsLocation/Applications/ProjectName.app/ProjectName"

ld: library not found for -lThree20Core
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ failed with exit code 1

我想我只是不太了解clang和一般的构建命令。 对于可以阅读此命令的人,出现在-lThree20Core之前的派生路径是否很有趣? (我本以为应该在它前面加上-L或其他符号。)

根据此博客帖子http://www.amirnaor.com/?p=112 ,我已经验证了标题搜索路径是正确的,但是在项目更新后我添加了three20项目,因此似乎不是反正问题。

有人知道这里可能有什么问题吗?

如果您的应用也不是为在实际设备上与Xcode一起运行而构建的,那么这意味着Three20Core库没有针对iOS设备上的处理器的二进制数据,仅针对Mac处理器。 如果找到libThree20Core.a文件或每个文件的名称,然后在“ 终端应用程序 ”中键入

> file <path-to-binary>/libThree20Core.a

你应该看到这样的东西

<path-to-binary>/libThree20Core.a (for architecture armv6): current ar archive random library
<path-to-binary>/libThree20Core.a (for architecture armv7): current ar archive random library
<path-to-binary>/libThree20Core.a (for architecture i386):  current ar archive random library

如果您自己构建libThree20Core.a ,则需要为所有三种架构创建一个版本。 我还没有想出如何在Xcode中完全做到这一点,您似乎只能针对Mac处理器或iOS处理器,而不是两者。 您可以做的是对Mac构建两次该库,对于iOS构建一次该库。 您可以使用libo命令行工具将二者合并为一个.a文件

> lipo -create -output libThree20Core.a libThree20Core_x86.a libThree20Core_arm.a

您也可以尝试设置Xcode以根据目标体系结构使用不同的库搜索路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM