簡體   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