升級到XCode 3.2.3和iPhone 3.2/4.0 SDK在我的構建過程中引入了一個奇怪的錯誤。靜態庫依賴關係在Xcode 3.2.3上的模擬器中編譯,在設備上失敗
我有一個靜態庫Compton,它本身依賴於three20。我將Compton建立爲它所支持的客戶端應用程序的依賴。
當我在模擬器或設備模式,3.2或4.0 SDK中編譯Compton作爲其自己的項目時,一切都很好編譯,沒有錯誤。
當我編譯一個客戶端應用程序,該應用程序使用3.2或4.0 SDK,模擬器,針對iPhone上的iPhone或iPhone/iPad 3.2,一切都很好,沒有編譯錯誤,應用程序按照預期在模擬器中運行。
當我編譯完全相同的項目,除了從模擬器到設備的構建設置以外沒有任何改變,但是,我得到了下面的鏈接錯誤,我似乎無法在與#import
聲明,搜索路徑,構建設置,等等。我真的很沮喪的部分是模擬器的版本正在建設和運行良好,這似乎是一個小小的配置問題。我粘貼下面的錯誤,看起來像Compton類,從在設備模式下構建我的項目的角度看,無法「看到」一些三個頭。
我使用three20的trunk版本,今天拉。
這裏是鏈接錯誤輸出:
Ld build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate normal armv7
cd /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate
setenv IPHONEOS_DEPLOYMENT_TARGET 4.0
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -L/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -F/Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/Debug-iphoneos -filelist /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate.LinkFileList -dead_strip -ObjC -miphoneos-version-min=4.0 -framework Foundation -framework UIKit -framework CoreGraphics -framework AudioToolbox -framework AVFoundation -framework CFNetwork -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework QuartzCore -framework StoreKit -framework SystemConfiguration -lxml2 -lz.1.2.3 /Users/wiley/iphone_projects/ComptonQuizzes/libs/Compton/src/build/Debug-iphoneos/libCompton.a -o /Users/wiley/iphone_projects/ComptonQuizzes/NewBlankComptonTemplate/build/NewBlankComptonTemplate.build/Debug-iphoneos/NewBlankComptonTemplate.build/Objects-normal/armv7/NewBlankComptonTemplate
Undefined symbols:
"_OBJC_CLASS_$_TTStyleSheet", referenced from:
objc-class-ref-to-TTStyleSheet in AppDelegate.o
"_OBJC_CLASS_$_TTURLAction", referenced from:
objc-class-ref-to-TTURLAction in AppDelegate.o
"_OBJC_CLASS_$_TTRoundedRectangleShape", referenced from:
objc-class-ref-to-TTRoundedRectangleShape in libCompton.a(ComptonStyleSheet.o)
"_OBJC_METACLASS_$_TTDefaultStyleSheet", referenced from:
_OBJC_METACLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
"_OBJC_CLASS_$_TTView", referenced from:
objc-class-ref-to-TTView in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTShapeStyle", referenced from:
objc-class-ref-to-TTShapeStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTInnerShadowStyle", referenced from:
objc-class-ref-to-TTInnerShadowStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_METACLASS_$_TTViewController", referenced from:
_OBJC_METACLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
_OBJC_METACLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
_OBJC_METACLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
_OBJC_METACLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
_OBJC_METACLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
"_OBJC_CLASS_$_TTURLCache", referenced from:
objc-class-ref-to-TTURLCache in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTSolidBorderStyle", referenced from:
objc-class-ref-to-TTSolidBorderStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTViewController", referenced from:
_OBJC_CLASS_$_ComptonFeedbackController in libCompton.a(ComptonFeedbackController.o)
_OBJC_CLASS_$_ComptonCatalogController in libCompton.a(ComptonCatalogController.o)
_OBJC_CLASS_$_ComptonQuizStartController in libCompton.a(ComptonQuizStartController.o)
_OBJC_CLASS_$_PILAppAdViewController in libCompton.a(PILAppAdViewController.o)
_OBJC_CLASS_$_ComptonQuizController in libCompton.a(ComptonQuizController.o)
"_OBJC_CLASS_$_TTNavigator", referenced from:
objc-class-ref-to-TTNavigator in AppDelegate.o
"_OBJC_CLASS_$_TTPostController", referenced from:
objc-class-ref-to-TTPostController in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTRoundedRightArrowShape", referenced from:
objc-class-ref-to-TTRoundedRightArrowShape in libCompton.a(ComptonStyleSheet.o)
"_OBJC_CLASS_$_TTButton", referenced from:
objc-class-ref-to-TTButton in libCompton.a(ComptonFeedbackController.o)
"_OBJC_CLASS_$_TTSolidFillStyle", referenced from:
objc-class-ref-to-TTSolidFillStyle in libCompton.a(ComptonQuizStartController.o)
"_OBJC_CLASS_$_TTWebController", referenced from:
objc-class-ref-to-TTWebController in AppDelegate.o
"_TTScreenBounds", referenced from:
-[ComptonCatalogController viewDidLoad] in libCompton.a(ComptonCatalogController.o)
-[PILAppAdViewController viewDidLoad] in libCompton.a(PILAppAdViewController.o)
"_OBJC_CLASS_$_TTDefaultStyleSheet", referenced from:
_OBJC_CLASS_$_ComptonStyleSheet in libCompton.a(ComptonStyleSheet.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
誰能幫我找出什麼可能是錯的怎麼回事?
更新:我已經消除了重複的符號使用three20和process described here的叉子和拆卸three20和康普頓的-all_load鏈接標誌鏈接錯誤。我堅持的真正瘋狂的問題仍然存在:我可以在模擬器中編譯和運行應用程序,但是在編譯設備時,會出現上述鏈接錯誤。
更新2:我解決了問題,添加了答案並接受了它。這個問題確實是一個構建配置設置 - 如果您使用的是4.0 SDK,則需要將「架構」設置爲「優化(armv7)」。
您是否在構建相同的目標和相同的配置? – 2010-07-08 19:46:54
@ cory.m.smith我的客戶端應用程序的「目標設備系列」設置爲「iPhone」,其「基礎SDK」設置爲「iPhone設備4.0」。這是你問的嗎? – Prairiedogg 2010-07-08 21:23:26
這個鏈接看起來很有希望的答案: http:// stackoverflow。com/questions/2456795/building-iphone-static-library-for-armv6 -and-armv7-that-includes-another-static-l – Prairiedogg 2010-07-08 21:41:39