2013-11-01 20 views
9

Viene visualizzato questo errore quando sto tentando di eseguirlo sul mio dispositivo, tuttavia funziona correttamente quando viene eseguito sul simulatore. Si tratta di un errore della catena di strumenti o di un errore di intestazione SDK? Di seguito è il messaggio di errore che ottengo durante la compilazione.libreria xcode non trovata per -lobjc

messaggio di errore:

Ld /Users/KhangYu/Library/Developer/Xcode/DerivedData/mobiletimetec-bbuzqjqgmijmomgdmvebkbyasqii/Build/Intermediates/mobiletimetec.build/Debug-iphoneos/mobiletimetec.build/Objects-normal/armv7/mobiletimetec normal armv7 
    cd /Users/KhangYu/Desktop/KPTesting/setting 
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.1 
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/KhangYu/Library/Developer/Xcode/DerivedData/mobiletimetec-bbuzqjqgmijmomgdmvebkbyasqii/Build/Products/Debug-iphoneos -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/lib/system -F/Users/KhangYu/Library/Developer/Xcode/DerivedData/mobiletimetec-bbuzqjqgmijmomgdmvebkbyasqii/Build/Products/Debug-iphoneos -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -filelist /Users/KhangYu/Library/Developer/Xcode/DerivedData/mobiletimetec-bbuzqjqgmijmomgdmvebkbyasqii/Build/Intermediates/mobiletimetec.build/Debug-iphoneos/mobiletimetec.build/Objects-normal/armv7/mobiletimetec.LinkFileList -dead_strip -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.1 -framework SystemConfiguration -framework AVFoundation -lsqlite3.0 -framework MapKit -framework CoreLocation -framework MessageUI -framework QuartzCore -framework Security -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/KhangYu/Library/Developer/Xcode/DerivedData/mobiletimetec-bbuzqjqgmijmomgdmvebkbyasqii/Build/Intermediates/mobiletimetec.build/Debug-iphoneos/mobiletimetec.build/Objects-normal/armv7/mobiletimetec 

ld: library not found for -lobjc 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

// - END -

questo sta per essere la mia morte. Qualche idea su come risolverlo? Il tuo aiuto sarà molto apprezzato.

Grazie in anticipo.

Soluzione

Grazie Kevin e Jasper Blues rispondere e grazie anche Reno Jones per modificare il mio post. Dopo ore di tentativi di risolvere questo problema, ho rinominato il file "libobjc.A.dylib" in "libobjc.dylib" e l'errore scompare. P/S: "libobjc.A.dylib" - situato in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/*/usr/lib /, grazie ancora a Kevin.

+1

È una libreria mancante, una specie di errore tra toolchain e header sdk. – Kevin

+0

Che sdk stai usando? Esegui 'ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/*/usr/lib/libobjc *' e dicci cosa mostra. – Kevin

+0

La tua "Soluzione" funziona completamente per Xcode 6: Ho copiato '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libobjc.A.dylib 'a'/Applicazioni/Xcode.app/Contenuti/Sviluppatore/Piattaforme/iPhoneOS.platform/Sviluppatore/SDK/iPhoneOS.sdk/usr/lib/libobjc.dylib' ... Quello che non capisco è .. . perché? –

risposta

5

Suppongo che funzioni sul simulatore, ma non sul dispositivo perché hai specificato "ALTRI LINKER FLAG" separati per entrambe le configurazioni "Debug" e "Rilascio". Solitamente lo fai se stai collegando un framework di debug come "Reveal", "DCIntrospect", ecc.

Quello per "Release" sembra essere errato. Dovrebbe essere '-Objc' e non '-lObjc' - stiamo dicendo al compilatore che stiamo usando Objective-C e non caricare una libreria chiamata 'Objc'.

Per correggere:

  • In Xcode, fare clic sul bersaglio per la tua app.
  • Apre la scheda "Impostazioni build".
  • Cerca "Altri linker flag", quindi non sei sopraffatto dalle opzioni.
  • Correggere la configurazione di 'Release'. Change '-lObjc' a '-Objc'

flags

+0

Vedere la soluzione in questione nella sezione "Soluzione" –

+0

La domanda non diventa mai una seconda natura, poiché è molto probabile che si tratti di una delle librerie a cui è collegato il file binario. Quindi non è in Build Settings. –

1

Non c'è bisogno di rinominare "libobjc.A.dylib", appena ri-link le cose come: ln -s ./libobjc.A .dylib ./libobjc.dylib

+0

Anche questo funzionerebbe, ma mi chiedo perché è tutto necessario –

Problemi correlati