Je développe une application sous Xcode.
Lorsque j'essaie de construire, cette erreur survient:
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)
Quelqu'un sait-il ce qui ne va pas?
Voler la réponse de @ martin-baulig:
Essayez une reconstruction complète/propre. Il est possible que la version précédente ait été anormalement abandonnée, ce qui a endommagé ou endommagé le fichier TWRAppDelegate.o.
J'ajoute généralement un espace (il peut s'agir de n'importe quel caractère) au fichier en question, le supprime, puis enregistre ... plus simple et plus rapide qu'une construction nette.
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
il suffit de supprimer ce fichier en exécutant cmd dans votre application de terminal:
rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o
Vous pouvez simplement supprimer le fichier TWRAppDelegate.o et continuer votre construction. Copiez le chemin complet mentionné dans le message d'erreur et collez-le derrière une commande 'rm' dans votre terminal. Il n'est pas nécessaire de nettoyer/reconstruire, supprimer les données dérivées, ajouter/supprimer le fichier du projet, etc.
Pour résoudre automatiquement ce problème, Build Script Phase
peut être ajouté. Allez à Xcode -> Votre projet -> Votre cible -> Phases de construction -> + -> Nouvelle phase de script d'exécution
Renommez-le en Xcode Link Fix
et déplacez-le au-dessus de la phase Compile Sources
. Collez ceci dans le corps du script:
# Legacy build system
dirname "$LD_DEPENDENCY_INFO_FILE" | xargs -I {} find {} -size 0 | while read -d $'\n' file; do
rm "$file"
done
# New build system
find "$OBJECT_FILE_DIR_normal" -size 0 | while read -d $'\n' file; do
rm "$file"
done
Ce script vérifie la présence de fichiers objets de taille nulle et les supprime. Ainsi, lorsque la compilation est effectuée à l'étape suivante, elle aboutit.
Vous devez ajouter ce script pour chaque cible d'application si vous en avez plusieurs.
Ce script prend environ 0,1 seconde à s'exécuter et vous évite une reconstruction complète du projet.
Comme la construction d'un projet propre peut prendre beaucoup trop de temps, il existe un moyen plus rapide pour ceux qui ont accès au fichier corrompu dans le cache:
Version complète pour que vous n'ayez aucun mal à trouver le fichier:
Moyen rapide de corriger une erreur sans nettoyer le cache complet:
TWRAppDelegate
)Une reconstruction propre n’a pas eu lieu dans mon cas, alors j’explique comment j'ai résolu le problème:
- Suppression de la référence au fichier (ne pas supprimer le fichier)
- Ajoutez le fichier au projet à nouveau et exécutez
Étape 1. Allez à: Projet> Paramètres de construction> Chemins de recherche
Étape 2. Définissez "Toujours rechercher les chemins d'utilisateur" sur Oui
Étape 3. Construisez le projet (vous recevrez un avertissement mais le projet se construira.)
Étape 4. Définissez "Toujours rechercher les chemins utilisateur" sur Non et reconstruisez à nouveau pour éliminer l'avertissement.