2012-08-15 26 views
7

Dopo l'aggiornamento da Xcode 4.3 di Xcode 4.4, ho iniziato a ottenere il seguente errore sulla costruzione di mio iPhone app:errore Linker in Xcode 4.4

ld: section __objc_const (address=0x0010C720, size=7265990088) would make the output executable exceed available address range for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

L'indirizzo di memoria e il numero non significano niente per me , ma rimangono coerenti attraverso clean e ricostruzioni. Non mi è chiaro come trovare ciò che potrebbero fare riferimento.

Il codice ha fatto e continua a compilare in XCode 4.3.

Qualcuno ha idea di come rintracciare che cosa sta causando questo errore?

+0

probabilmente non si è collegati a un framework che si sta utilizzando o si è collegati alla cosa sbagliata. Se il primo, controllare e collegarlo nelle impostazioni di generazione. Se quest'ultimo, rimuove il linker sbagliato e si spera che XCode si ricolleghi a quello corretto. – aforaudrey

+0

Nel programma sono presenti dati globali o statici di grandi dimensioni inizializzati? –

+0

@MartinR Sì, più grande di quanto ho visto in un programma tipico (non ho scritto molto del codice) ma nulla dell'ordine di 7 miliardi o anche di un milionesimo di quello. –

risposta

1

Potete vedere le dimensioni di tutti i simboli (comprese le variabili globali) in un link file mappa:

  • Nelle impostazioni di generazione per il vostro obiettivo, consultare la sezione "Collegamento" e impostare "Write Collega file mappa "su" Sì ".
  • Costruisci il programma. Il linker fallirà, ma il file della mappa dei collegamenti sarà scritto.
  • Individuare il file della mappa dei collegamenti. L'output del registro dal linker mostra i parametri -map -Xlinker -/path/to/linkmapfile.txt. È da qualche parte nella cartella DerivedData del tuo progetto.
  • Il file della mappa dei collegamenti mostra gli indirizzi (prima colonna) e le dimensioni (seconda colonna) per tutti i simboli. Per le variabili globali, mostra il nome e in quale file oggetto si trovano.
  • È necessario trovare l'indirizzo del messaggio di errore (0x0010C720 nell'esempio) nel file della mappa dei collegamenti.
  • È possibile controllare il file della mappa dei collegamenti per altri simboli di grandi dimensioni.

Quindi forse questo aiuta a restringere il problema.

+1

Sfortunatamente in questo caso, il linker non crea il file. –

+0

@ TheDirtyCalvinist: Grazie per il feedback. Purtroppo non ho più idee su come risolvere questo problema. –

2

Ho avuto lo stesso errore. Fortunatamente, ho potuto ricordare il momento in cui è apparso, rotolato indietro e confrontato le revisioni. Era una categoria con metodi statici sulla classe di Google Analytics GAI. Non ho idea del perché sia ​​successo, dal momento che altre categorie nel progetto funzionano bene, ma spero che aiuti anche qualcuno.

+0

Questo era il mio caso! Grazie –