2013-09-30 9 views
19

Recentemente ho cambiato il mio sviluppo MacBook da un classico MacBook (32 bit) a un MacBook Air (64 bit). Sto cercando di aprire un progetto che è stato realizzato sul mio vecchio MacBook (32 bit) con XCode 4.collegamento a dylib creato per file MacOSX '/usr/lib/libSystem.B.dylib' per architettura i386

Il progetto è un'applicazione PhoneGap realizzata in PhoneGap 1.7.0.

Il mio nuovo MacBook Air (64 bit) è in esecuzione XCode 5.

Ho importato miei profili sviluppatori dal mio vecchio MacBook al mio nuovo MacBook Air. Ma quando provo ad eseguirlo, ottengo il seguente messaggio di errore.

enter image description here

enter image description here

Ho provato a cambiare la mia architettura nelle impostazioni di generazione per ARMv7 ma ancora fortuna :(

Qualcuno sa perché sto ottenendo questo errore e come risolvere il problema?

Grazie

+0

È necessario ricreare il dylib per indirizzare il dispositivo iOS e il simulatore. –

+0

Come faccio? –

+0

Trova il progetto originale che ha creato il dylib e crea un target iOS per esso. –

risposta

26

OK così come si scopre, XCode 5 cambia l'architettura di default per ARMv7 quando la mia applicazione non supporta ARMv7. Sto eseguendo Cordova 1.7.0 e quella versione non ha il supporto per l'architettura armv7.

architettura Fix problema:

  1. Rimosso TUTTI architetture da Build Settings -> Valid Architecture
  2. Aggiunto armv6 a Build Settings ->Valid Architecture enter image description here


Fix libSystem.B.dylib problema:

  1. Rimosso /usr/lib/libSystem.B.dylib da Build Settings ->Linking ->Other Linker Flags

  2. anche rimosso -weak_library da Build Settings ->Linking ->Other Linker Flags enter image description here

+1

nel mio caso, sto cercando di eseguire il progetto realizzato in xcode 4.5 in xcode 5.0. Quindi questo errore si verifica in ogni progetto. così ho rimosso tutti i flag linker da 'altri Linker Flags' e funziona. –

+1

Grazie mille amico per questo .... esattamente il mio problema ... ed eccitabilmente la soluzione di cui avevo bisogno :) – Abolfoooud

+0

Dopo 2 settimane di ricerca di una soluzione, è stato questo! – AddisDev

1

Xcode 5 vi chiede di costruire le librerie per il simulatore (1) e per iOS (2). È quindi possibile unire (3) questi in un fat binario che si collega al progetto principale. Io uso gli stessi flag che Xcode sta usando per costruire il tuo progetto principale (come si vede nel tuo screendump).

Espresso in variabili comuni toolchain GNU faccio:

1. Costruire una libreria per il simulatore

CC=clang 
IPHONEOS_DEPLOYMENT_TARGET=7.0 
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH" 
CFLAGS="-arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -mios-simulator-version-min=7.0" 

2. Costruire una libreria per iOS

CC=clang 
IPHONEOS_DEPLOYMENT_TARGET=7.0 
PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH" 
CFLAGS="-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk -miphoneos-version-min=7.0" 

3. Unione di un file binario grasso

scegliere uno dei .a o .dylib a seconda di quello che si utilizza:

lipo -create "your armv7 lib".a  "your simulator lib".a  -output "your lib".a 
lipo -create "your armv7 lib".dylib "your simulator lib".dylib -output "your lib".dylib 
+0

Dove dovrei digitare questi? È nel terminale? Inoltre, per il punto 3, posso chiamare quelle libs quello che voglio? Cosa sostituirebbe il testo segnaposto? –

Problemi correlati