Estoy desarrollando una aplicación en Xcode.
Cuando intento construir, aparece este error:
ld: in /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o, file too small for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
¿Alguien sabe lo que pasa?
TWRAppDelegate.o
archivo dañado o de tamaño cero.Respuestas:
Robando la respuesta de @ martin-baulig:
Intente una reconstrucción / limpieza completa. Es posible que la compilación anterior haya sido anulada de manera anormal, dejando el archivo TWRAppDelegate.o dañado o de tamaño cero.
fuente
Por lo general, agrego un espacio (podría ser cualquier carácter para el caso) al archivo en cuestión, lo elimino y luego lo guardo. Más fácil y rápido que una construcción limpia.
fuente
Para solucionar automáticamente este problema,
Build Script Phase
se puede agregar. Vaya a Xcode -> Su proyecto -> Su objetivo -> Fases de construcción -> + -> Nueva fase de ejecución del scriptCambie el nombre
Xcode Link Fix
y muévalo por encima de laCompile Sources
fase. Pegue esto en el cuerpo del script:# Legacy build system legacy_dir=`dirname "${LD_DEPENDENCY_INFO_FILE}"` if [ -d "${legacy_dir}" ]; then find "${legacy_dir}" -size 0 | while read -d $'\n' file; do rm "$file" done fi # New build system if [ -d "${OBJECT_FILE_DIR_normal}" ]; then find "${OBJECT_FILE_DIR_normal}" -size 0 | while read -d $'\n' file; do rm "$file" done fi
Esta secuencia de comandos busca archivos de objetos con tamaño cero y los elimina para que cuando la compilación se realice en el siguiente paso sea exitosa.
Debe agregar este script para cada destino de la aplicación si tiene muchos.
Este script tarda ~ 0,1 segundos en ejecutarse y le ahorra la reconstrucción completa del proyecto.
fuente
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
fuente
simplemente elimine este archivo ejecutando cmd en su aplicación de terminal:
fuente
Manera rápida de corregir el error sin una limpieza completa de la caché:
TWRAppDelegate
)fuente
Dado que la construcción de un proyecto limpio puede llevar demasiado tiempo, hay una forma más corta para aquellos que tienen acceso al archivo que está dañado en la caché:
Versión completa para que no tenga problemas para encontrar el archivo:
fuente
Simplemente puede eliminar el archivo TWRAppDelegate.o y continuar con la compilación. Copie la ruta completa mencionada en el mensaje de error y péguela detrás de un comando 'rm' en su terminal. No es necesario limpiar / reconstruir, eliminar datos derivados, agregar / eliminar el archivo del proyecto, etc.
fuente
Paso 1. Vaya a: Proyecto> Configuración de compilación> Rutas de búsqueda
Paso 2. Establezca "Buscar siempre rutas de usuario" en Sí
Paso 3. Construya el proyecto (recibirá una advertencia pero el proyecto se construirá).
Paso 4. Vuelva a establecer "Buscar siempre rutas de usuario" en No y compile de nuevo para eliminar la advertencia
fuente
Una reconstrucción limpia no se realizó en mi caso, así que explico cómo resolví el problema:
- Se eliminó la referencia al archivo (no elimine el archivo)
- Agregue el archivo al proyecto nuevamente y ejecute
fuente