2011-09-01 12 views
6

¿Alguien sabe lo que significa esta advertencia? Es seguido por el error:ld: advertencia: sección __DATA/__objc_imageinfo__DATA tiene tamaño inesperadamente grande

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

Este es un proyecto de Xcode para el IPAD. Solo veo esto cuando compilo para el simulador, no el dispositivo. He vinculado una biblioteca estática (* .a) a este proyecto y creo que esto está fallando. Además, solía ejecutarse en el simulador sin problemas y no estoy seguro de qué fue lo que cambió.

Toda la salida del compilador:

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 

Respuesta

2

el error es un error interno que parece ocurrir cuando el compilador LLVM no es encontrar un símbolo que se espera encontrar durante la fase final optimización en tiempo de enlace. Una causa común es la vinculación con una biblioteca estática a la que se le ha quitado algún símbolo esencial (no se produciría ningún error durante la vinculación de la biblioteca estática en sí, aunque se produciría si la biblioteca estuviera vinculada dinámicamente).

Aunque también hay un error con LLVM no informar el verdadero error, la solución correcta es asegurarse de que las bibliotecas estáticas contribuyen todos los símbolos que deberían durante el enlace. Intente examinar la configuración de compilación para las bibliotecas estáticas incluidas en el proyecto, asegurándose de que la eliminación del producto vinculado (el archivo .a) está desactivada o configurada para eliminar solo los símbolos de depuración.

Si no controla la construcción de la biblioteca estática, una solución es desactivar la optimización de tiempo de enlace en LLVM, aunque esto puede dar como resultado la producción de código subóptimo.

4

solucionado.

Esta advertencia y error desaparecen cuando cambio la configuración de acumulación llamado "C/C++ Compiler versión" de "LLVM GCC 4.2" a "GCC 4.2".

+0

Muy cierto. Parece que el nuevo compilador aún no está listo para el horario estelar. Tuve un problema similar al compilar el código de Mac. La compilación de depuración funciona, pero no pudo compilar una versión de lanzamiento debido a un problema similar al suyo y el problema ocurrió al vincular una biblioteca dinámica. – adib

+1

Con Xcode 4.2 debes usar Apple LLVM Compiler 3.0. – LearnCocos2D

3

consigo "inesperado gran tamaño" sólo cuando la estructura Ajuste "Optimización de Enlace-Time" (LLVM_LTO = SI) está activado. Recomiendo dejarlo desactivado (por defecto).

Cuestiones relacionadas