web-dev-qa-db-fra.com

ld: bibliothèque introuvable pour l'erreur -lcrt1.3.1.o lors de l'exécution de l'application dans le périphérique avec xcode 8.0 avec iOS10

Après la mise à niveau de xcode vers la version 8.0, mon projet d’application a généré une erreur pour la cible de l’appareil, mais avec succès pour le simulateur.

L'erreur est comme:
ld: bibliothèque non trouvée pour -lcrt1.3.1.o

Qu'est-ce que la solution pour cette erreur.

24
Sandip Patel - SM

Après avoir passé beaucoup de temps, j'ai enfin compris la raison de cette erreur.

Erreur: ld: bibliothèque introuvable pour -lcrt1.3.1.o

Solution: Si votre source de projet a une cible de déploiement depuis iOS 5.0, remplacez-la par iOS 6.0 ou une version ultérieure et votre erreur sera corrigée. Maintenant, cela fonctionne bien pour l'appareil aussi.

Hourra!!! 

52
Sandip Patel - SM

crt1.3.1.o est une bibliothèque incluse dans les anciens iOS (et donc leurs SDK), mais n'est plus présente dans les nouveaux SDK. Toutefois, lorsque la cible de déploiement du projet est définie sur un ancien iOS (<6.0, comme l'a constaté @ Sandy), Xcode tente toujours de se lier à celle-ci.

Pour continuer à prendre en charge iOS 5.x dans les Xcodes plus récents, il suffit de copier crt1.3.1.o à partir d'un Xcode plus ancien dans le répertoire …/usr/lib/ approprié dans le Xcode plus récent. Xcode utilisera uniquement crt1.3.1.o si la cible de déploiement est <6.0 - pour les projets avec une cible de déploiement ≥6.0 crt1.3.1.o reste inutilisée et le binaire lié résultant est identique à ce qu'il était avant _…/usr/lib/crt1.3.1.o-addition.

Pour obtenir un Xcode plus récent afin de lier correctement un projet à une cible de déploiement iOS 5.x:

  1. Téléchargez un Xcode plus ancien comportant toujours crt1.3.1.o à partir de https://developer.Apple.com/downloads/

    J'ai utilisé Xcode 5.1.1, bien que tout Xcode supportant iOS 5.x devrait fonctionner (qui, selon Wikipedia devrait être Xcode 4.2-6.4).

  2. Ouvrez le Xcode .dmg et sur l’image disque, localisez le fichier à /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS….sdk/usr/lib/crt1.3.1.o

    _ {Depuis que j'ai utilisé Xcode 5.1.1, le mien était à …/iPhoneOS7.1.sdk/usr/lib/crt1.3.1.o.} _

  3. Copiez-le dans le même répertoire Xcode.app- dans votre nouveau Xcode: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/crt1.3.1.o

    Mon plus récent Xcode au moment de l'écriture est la dernière version, Xcode 8.1 (qui inclut le SDK iOS 10.1 et la prise en charge téléchargeable du simulateur iOS vers iOS 8.1).


Notez que vous devrez répéter ces étapes après chaque mise à niveau Xcode, car le processus de mise à jour Xcode standard consiste simplement à supprimer Xcode.app et tout ce qu'il contient avec le Xcode.app mis à jour.

Notez également que j'ai testé cette application avec Xcode 8.1 pour créer une application avec une cible de déploiement d'iOS 5.0 qui s'exécutera à la fois sur mon iOS 10.1.1 iPad Air 2 et mon iOS 6.1.3 iPhone 4S. Cependant, je n'ai pas soumis de version utilisant ce processus à l'App Store iOS. Bien qu'il soit peu probable que la certification d'Apple pose problème avec cette (puisqu'il s'agit après tout de leur propre bibliothèque iOS crt1.3.1.o; et qu'il n'y a pas d'autre moyen de créer une application avec le dernier SDK tout en prenant en charge iOS à 5. x, ce qui est presque certainement quelque chose que certains clients d’entreprise continuent de faire)}, je ne peux pas faire de promesse ferme ici.

17
Slipp D. Thompson

Au lieu d'utiliser les bibliothèques d'une installation Xcode plus ancienne, vous pouvez simplement les recompiler à partir de sources: https://github.com/mringwal/csu-ios

0
mringwal

supprimez les lignes -lPods- (someCocoaPod) de la liste "Autres drapeaux de l'éditeur de liens" MAIS uniquement si $ (hérité) est en haut. Au début, j'étais incertain, mais le signe rassurant était que je voyais toujours des références à mes cocotiers lorsque je quittais le mode d'édition (hérité). J'ai testé en version debug et release, ce qui me donnait des erreurs et le problème a été immédiatement résolu

0
Deepak Saki