2012-08-15 22 views
7

Tras la actualización de Xcode 4.3 a Xcode 4.4, empecé a tener el siguiente error en la construcción de mi aplicación para el iPhone:error de vinculador en 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)

La dirección de memoria y el número no significa nada para mí , pero siguen siendo consistentes en limpiar y reconstruir. No me queda claro cómo encontrar lo que podrían estar haciendo referencia.

El código se compiló y todavía se compila en XCode 4.3.

¿Alguien tiene alguna idea de cómo puedo rastrear qué está causando este error?

+0

es probable que no esté vinculado a un marco que está utilizando, o que se haya vinculado a algo incorrecto. Si es el primero, verifíquelo y vincúlelo en la configuración de compilación. Si es el último, elimine el enlazador incorrecto y esperemos que XCode vuelva a enlazar con el correcto. – aforaudrey

+0

¿Tiene grandes datos globales o estáticos inicializados en su programa? –

+0

@MartinR Sí, más grande que he visto en un programa típico (no escribí mucho del código) pero nada del orden de 7 mil millones o incluso una millonésima de eso. –

Respuesta

1

Se puede ver los tamaños de todos los símbolos (incluyendo las variables globales) en un enlace Mapa Archivo:

  • En la configuración de generación para su objetivo, vaya a la sección "Enlace" y establecer "Escribe Enlace archivo de mapa "a" Sí ".
  • Cree el programa. El enlazador fallará, pero el archivo del mapa de enlace estará escrito.
  • Busque el archivo del mapa de enlaces. La salida de registro del enlazador muestra los parámetros -map -Xlinker -/path/to/linkmapfile.txt. Está en algún lugar de la carpeta DerivedData de su proyecto.
  • El archivo de mapa de enlace muestra las direcciones (primera columna) y los tamaños (segunda columna) para todos los símbolos. Para variables globales, muestra el nombre y el archivo de objeto en el que se encuentran.
  • Debería encontrar la dirección de su mensaje de error (0x0010C720 en su ejemplo) en el archivo de mapa del enlace.
  • Puede consultar el archivo de mapa de enlace para ver si otros símbolos tienen un tamaño grande.

Quizás esto ayude a reducir el problema.

+1

Desafortunadamente, en este caso, el vinculador no crea el archivo. –

+0

@TheDirtyCalvinist: Gracias por los comentarios. Lamentablemente, no tengo más ideas para resolver este problema. –

2

Tuve el mismo error. Afortunadamente, podía recordar el momento en que apareció, retrocedí y comparé las revisiones. Era una categoría con métodos estáticos en la clase Google Analytics GAI. No tengo idea de por qué sucedió, ya que otras categorías en el proyecto funcionan bien, pero espero que ayude a alguien también.

+0

¡Este era mi caso! Gracias –

Cuestiones relacionadas