2011-10-31 46 views
2

當我構建歸檔文件時,出現以下錯誤。我的應用程序適合模擬器。當在Xcode 4.2中構建歸檔時,three20相關的clang鏈接錯誤

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 

我想我只是不知道關於鏗鏘聲和建立一般的命令。在-lThree20Core之前出現的派生路徑是否對可以閱讀此命令的人感到有趣? (我會認爲應該在它前面有一個-L)

我已驗證我的標題搜索路徑是否正確,根據此博文http://www.amirnaor.com/?p=112,但我在項目更新後添加了three20項目,所以看起來不是問題。

任何人都知道問題可能在這裏?

回答

0

如果您的應用程序無法在真實設備上與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的庫。使用荔波命令行工具

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

你可以嘗試交替設立的Xcode使用不同的庫搜索根據目標架構路徑可以將它們合併兩成一個單一的某文件。

+0

不幸的是,這個答案現在完全不可測。我最終得到了應用程序來編譯這兩個,但我嘗試了很多東西,我不知道我做了什麼來解決這個問題。作爲唯一的答案,你的選中標記! – livingtech