100 votes

Erreur d'édition de liens dans Xcode : fichier trop petit pour l'architecture x86_64

Je suis en train de développer une application dans Xcode.

Lorsque j'essaie de construire, cette erreur apparaît :

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 ?

209voto

Peter K. Points 3837

Je vole la réponse de @martin-baulig :

Essayez une reconstruction complète / un nettoyage. Il est possible que la construction précédente ait été anormalement interrompue, laissant le fichier TWRAppDelegate.o corrompu ou de taille nulle.

27voto

Prabhu Beeman Points 290

J'ajoute généralement un espace (qui peut être n'importe quel caractère) au fichier en question, je le supprime et j'enregistre. C'est plus facile et plus rapide qu'une construction propre.

12voto

Pour résoudre automatiquement ce problème Build Script Phase peuvent être ajoutés. Allez dans Xcode -> Votre projet -> Votre cible -> Phases de construction -> + -> Nouvelle phase d'exécution de script.

Renommez-le en Xcode Link Fix et le déplacer au-dessus Compile Sources phase. Collez ceci dans le corps du 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

Ce script vérifie les fichiers objets de taille nulle et les supprime de sorte que lorsque la compilation est effectuée à l'étape suivante, elle réussit.

Vous devez ajouter ce script pour chaque cible d'application si vous en avez plusieurs.

Ce script prend ~0,1 seconde pour s'exécuter et vous évite de reconstruire entièrement le projet.

9voto

yeyimilk Points 249

rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData

6voto

hainguyen Points 158

Supprimez simplement ce fichier en exécutant cmd dans votre application terminal :

rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X