Xcode 4.5 and iOS6 – linker command failed with exit code 1

Dopo l’aggiornamento a Xcode 4.5 e relativo iOS6 ho riscontrato il seguente problema quando andavo a provare la mia applicazione sul mio device (iPhone 3GS).

[sourcecode language=”bash”]

Ld /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio normal armv7
cd /Users/unicondor/Documents/iosingunisannio-code/DingUnisannio
setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
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:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin"
/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.0.sdk -L/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos -L/Users/unicondor/Documents/iosingunisannio-code/DingUnisannio -F/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos -filelist /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio.LinkFileList -dead_strip -ObjC -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=5.0 /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libTapkuLibrary.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libfmdb.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMGSplitViewController.a /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMWFeedParser.a -framework QuartzCore -framework Foundation -framework UIKit -framework CoreGraphics -framework MapKit -framework MessageUI -framework MediaPlayer -framework AVFoundation -framework SystemConfiguration -framework AddressBook -framework CoreLocation -framework AddressBookUI -lxml2 -lsqlite3.0 -framework CFNetwork -framework Security -framework AudioToolbox -o /Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Intermediates/DingUnisannio.build/Debug-iphoneos/DingUnisannio.build/Objects-normal/armv7/Unisannio

Error:

clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libTapkuLibrary.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libfmdb.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMGSplitViewController.a’
clang: error: no such file or directory: ‘/Users/unicondor/Library/Developer/Xcode/DerivedData/DingUnisannio-czbgknwdwtdvjzfalsaqpvwuqqul/Build/Products/Debug-iphoneos/libMWFeedParser.a’

[/sourcecode]

Il problema e’ dovuto al fatto che le librerie esterne che ho usato nella mia App erano compilate solo per l’architettura armv7 e armv6. Con l’avvento dell’iPhone5 e del suo nuovo processore (armv7s) bisogna ricompilarle anche per la nuova architettura, per questo bisogna modificare il “Targets” associato ad ognuno di essere ed aggiungere l’architecture armv7s

Come viene mostrato nello screenshot in alto, bisogna solamente aggiungere questo nuovo tipo di processore armv7s in “Architettures” e “Valid Architettures” e ricompilare tutto il progetto da capo (cosi’ per tutte le librerie esterne usate dalla nostra app).

Un’ altra soluzione potrebbe essere quella di eliminare armv7s dalla “Valid Architecture” del nostro progetto, ma cosi’ facendo precludiamo la possibilita’ di poter utilizzare la nostra App sui nuovi iphone5 rilasciati da Cupertino.

Finally… iOS Developer Program Member

Rompo il letargo in cui mi ero immerso (un po’ per pigrizia un po’ per il poco tempo a disposizione) per scrivere un post che avrei dovuto scrivere da molto tempo. Finalmente mi sono iscritto all’ iOS Developer Program ( sviluppo applicazioni per iPhone/iPod/iPad).

Erano anni ( il primo libro sullo sviluppo di App iPhone lo comprai nel 2010) che volevo iniziare a sviluppare applicazione per dispositivi mobili, ma qualcosa me lo ha sempre impedito. In una cartella ho ancora la mia prima applicazione di prova: KamaTest, una semplice applicazione che in base all’immagine raffigurate una posizione del Kamasutra bisognava indovinare il numero ad essa associata 😛

Vabbe’ dubito sarebbe mai stata accettata dalla Apple, anche se le immagini che avevo scelto erano molto ‘pudiche’ grazie all’utilizzo di palloncini…

era pur sempre un ottimo inizio per iniziare a masticare un po’ di Objective-C, UIKit, Cocoa ecc… ma soprattutto per imparare qualche posizione nuova nella speranza remota che un giorno mi sarebbe tornato utile lo sforzo di memorizzazione 😀

Devo ammettere che il primo approccio verso un linguaggio di programmazione a messaggi non e’ stato un entangled  dato che ero abituato a linguaggi procedurali come il C o a linguaggi ad oggetti come Java, per cui passare dalla creazione di un oggetto like-Java: Object o = new Object() ad uno Objective-C: Object *o = [[ Object alloc] init] mi sembrava qualcosa di astruso 😛

Superate le prime avversità e grazie al PartTime ed al mio capo ( caro Ingegnere ho una menzione particolare per lei :D) ho iniziato a sviluppare seriamente un paio di App (spero presto siano pronte) sacrificando la maggior parte dell’estate.

Ho creato una Category iOS sul blog, spero di poterla riempire presto con qualche consiglio su come utilizzare certi componenti e sulle metodologie ( Pattern MVC) di programmazione da usare per lo sviluppo su Xcode.

Vi auguro una buona giornata/serata nella speranza di ritornare a scrivere con una cadenza maggiore e con più parsimonia 😀

P.s. sono interessato all’acquisto di un iPhone 3GS, l’emulatore non mi soddisfa più 😛 per cui non esitate a contattarmi nel caso vogliate venderne uno