2016-03-31 1 views
4

Je rencontre cette erreur d'assertion ld lors de la construction d'un framework dynamique iOS en ligne de commande à l'aide de xcodebuild.Échec d'assertion xcodebuild linker


0 0x10163b342 __assert_rtn + 144 
1 0x101678a3a archive::File<arm64>::makeObjectFileForMember(archive::File<arm64>::Entry const*) const + 1138 
2 0x1016783e8 archive::File<arm64>::justInTimeforEachAtom(char const*, ld::File::AtomHandler&) const + 122 
3 0x10168ea75 ld::tool::InputFiles::searchLibraries(char const*, bool, bool, bool, ld::File::AtomHandler&) const + 265 
4 0x101697db8 ld::tool::Resolver::resolveUndefines() + 160 
5 0x10169a117 ld::tool::Resolver::resolve() + 79 
6 0x10163c060 main + 812 
7 0x7fff9dd4c5ad start + 1 
A linker snapshot was created at: 
/tmp/MyKit-2016-02-31-154836.ld-snapshot 
ld: Assertion failed: (memberIndex != 0), function makeObjectFileForMember, file /Library/Caches/com.apple.xbs/Sources/ld64/ld64-253.9/src/ld/parsers/archive_file.cpp, line 355. 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Selon le code source archive_file.cpp (http://www.opensource.apple.com/source/ld64/ld64-253.3/src/ld/parsers/archive_file.cpp) il semble qu'il ya une sorte de corruption symbole alors que ld charge une bibliothèque. Mais à part cela, je n'ai aucune idée de la façon dont ce problème pourrait être résolu.

Ce problème apparaît uniquement lorsque j'essaie de créer mon infrastructure avec le bitcode activé en ajoutant un indicateur de compilateur "-fembed-bitcode". En outre, dans ma commande ld, j'essaie de lier plusieurs bibliothèques statiques, l'une d'entre elles est> 4,25 Go (avec bitcode intégré), et cette taille dépasse la valeur maximale d'un entier non signé de 32 bits (~ 3,99 Go). J'ai précédemment rencontré un problème avec libtool lié à ne pas être capable de gérer de grandes librairies binaires, donc c'est un de mes soupçons.

Je me demande si quelqu'un a vu des problèmes similaires ou savoir comment y remédier? Merci

quelques questions connexes

Weird xCode linker error I've never seen before saying "Assertion failed"

https://github.com/SciRuby/nmatrix/issues/69

http://lists.llvm.org/pipermail/llvm-dev/2013-October/066722.html

https://github.com/TrinityCore/TrinityCore/issues/14689

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57438

+1

4.25 Go bibliothèque statique?!? : o – Almo

Répondre

5

Voulez-vous lire l'explication de votre erreur, qui est ld: Assertion failed: (memberIndex != 0) ...? Follow this link

De même, ne vous inquiétez pas de la taille de votre bibliothèque statique. L'éditeur de liens supprimera toutes les informations inutiles dans l'exécutable final. Veuillez lire here

TL; Version DR:

  1. Nettoyez votre projet en utilisant Command-Option-Shift-K. En outre, choisissez Window > Organizer et passez à l'onglet Projects. Cliquez sur la flèche vers la droite située à droite du nom du dossier Derived Data, supprimez le dossier Derived Data et redémarrez XCode.

  2. aller à Build Settings dans votre project's settings => trouver Linking->Other linker flags => ajouter -v. Cela vous montrera le fichier corrompu exact qui cause votre erreur, si cela se produit toujours. Si vous avez à nouveau l'erreur, s'il vous plaît poster le chemin du fichier corrompu ici, nous pouvons travailler à partir de là. La raison de votre erreur est que un de votre bibliothèque statique est corrompu. Vous pouvez supprimer votre bibliothèque 4.25gb et la reconstruire pour voir si c'est le problème. Il est sous target settings -> build phases -> link binary with libraries de votre projet. Si l'erreur disparaît, c'est peut-être ça. Dans ce cas, prenez soin de donner le nom de la lib?

+0

merci. J'ai essayé # 1 et # 2 et ils me donnent la même erreur. -v ne donne pas beaucoup d'informations supplémentaires non plus. Pour # 3, l'éditeur de liens se plaindra de l'erreur de symbole non résolue si je supprime la bibliothèque statique puisque la lib est nécessaire par d'autres parties du code tout en liant le framework. – dennycd

+0

comment s'appelle la bibliothèque? En outre, 'Generate Debug Symbols' dans les paramètres du projet peut vous aider à réduire la taille de la bibliothèque statique lors de la construction. – donkey