2011-09-01 12 views
6

Qualcuno sa cosa significa questo avviso? E 'seguita da l'errore:ld: avviso: sezione __DATA/__ objc_imageinfo__DATA ha dimensioni inaspettatamente grandi

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1

Questo è un progetto Xcode per l'iPad. Lo vedo solo quando compilo per il simulatore, non per il dispositivo. Ho collegato una libreria statica (* .a) a questo progetto ed è qui che penso che questo non funzioni. Inoltre, funzionava sul simulatore senza problemi e non sono sicuro di cosa sia cambiato.

Tutto l'output del compilatore:

Ld /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator/IQ.app/IQ normal i386 
    cd /Users/cduckering/Desktop/LitePoint/Apps/App/IQ 
    setenv MACOSX_DEPLOYMENT_TARGET 10.6 
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator -F/Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator -filelist /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.LinkFileList -mmacosx-version-min=10.6 -dead_strip -ObjC -all_load -fprofile-use -Xlinker -objc_abi_version -Xlinker 2 -lCorePlot-CocoaTouch -weak_framework QuickLook -weak_framework MessageUI -framework QuartzCore -framework UIKit -framework Foundation -framework CoreGraphics -Xlinker -object_path_lto -Xlinker /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.lto_temporary.o -o /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Products/Debug-iphonesimulator/IQ.app/IQ 

ld: warning: section __DATA/__objc_imageinfo__DATA has unexpectedly large size 368 in /Users/cduckering/Library/Developer/Xcode/DerivedData/IQ-bldfqilntfqfrccozykbqulagovx/Build/Intermediates/IQ.build/Debug-iphonesimulator/IQ.build/Objects-normal/i386/IQ.lto_temporary.o 
Assertion failed: (_mode == modeFinalAddress), function finalAddress, file /SourceCache/ld64/ld64-123.2/src/ld/ld.hpp, line 573. 
0 0x10001286c __assert_rtn + 76 
1 0x10008c71c ld::tool::OutputFile::addressOf(ld::Internal const&, ld::Fixup const*, ld::Atom const**) + 188 
2 0x10008ed58 ld::tool::OutputFile::applyFixUps(ld::Internal&, unsigned long long, ld::Atom const*, unsigned char*) + 2840 
3 0x10008b62e ld::tool::OutputFile::writeOutputFile(ld::Internal&) + 814 
4 0x10008431c ld::tool::OutputFile::write(ld::Internal&) + 156 
5 0x100012e3f main + 1247 
6 0x100000e14 start + 52 
collect2: ld returned 1 exit status 
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1 

risposta

2

L'errore è un errore interno che sembra verificarsi quando il compilatore LLVM non trova un simbolo che si aspetta di trovare durante la fase di ottimizzazione del tempo di collegamento finale. Una causa comune è il collegamento a una libreria statica che ha rimosso alcuni simboli essenziali (non verrà generato alcun errore durante il collegamento della libreria statica stessa, anche se lo si farebbe se la libreria fosse collegata dinamicamente).

Anche se c'è un bug con LLVM che non riporta l'errore vero, la correzione corretta è assicurarsi che le librerie statiche forniscano tutti i simboli che dovrebbero durante il collegamento. Prova ad esaminare le impostazioni di compilazione per le librerie statiche incluse nel progetto, assicurandoti che lo stripping del prodotto collegato (il file .a) sia disabilitato o impostato per eliminare solo i simboli di debug.

Se non si controlla la creazione della libreria statica, una soluzione alternativa consiste nel disabilitare l'ottimizzazione della durata del collegamento in LLVM, sebbene ciò possa comportare la produzione di codice non ottimale.

4

risolto.

Questo avviso e errore scompaiono quando si modifica l'impostazione di build denominata "Versione del compilatore C/C++" da "LLVM GCC 4.2" a "GCC 4.2".

+0

Così vero. Sembra che il nuovo compilatore non sia ancora pronto per la prima serata. Ho avuto un problema simile compilando il codice Mac. La build di debug funziona ma non è possibile compilare una build di rilascio a causa di un problema simile al tuo e il problema si è verificato durante il collegamento di una libreria dinamica. – adib

+1

Con Xcode 4.2 dovresti usare Apple LLVM Compiler 3.0. – LearnCocos2D

3

Ottengo "inaspettatamente grandi dimensioni" solo quando l'impostazione di compilazione "Ottimizzazione Link-Time" (LLVM_LTO = YES) è abilitata. Raccomando di lasciarlo disabilitato (predefinito).

Problemi correlati