web-dev-qa-db-fra.com

Xcode 10 (iOS 12) ne contient pas libstdc ++ 6.0.9

Je télécharge le dernier Xcode chez Apple, mais j’ai constaté que je ne pouvais pas effectuer de recherche dans la bibliothèque intitulée "libstdc ++ 6.0.9" .  cant search libstdc++

38
CoderAzreal

libstdc ++ était obsolète il y a 5 ans. Les plates-formes les plus récentes d’Apple (tvOS et watchOS) ne le prennent pas en charge.

La prise en charge a été supprimée du runtime du simulateur iOS 12.0, mais elle est restée dans le runtime iOS 12.0 (périphérique) pour assurer la compatibilité binaire avec les applications fournies.

Vous devez mettre à jour votre projet pour utiliser libc ++ plutôt que libstdc ++ en définissant le paramètre de construction CLANG_CXX_LIBRARY ("Bibliothèque standard C++") sur libc ++.

Si vous avez des bibliothèques statiques qui dépendent de libstdc ++. Tbd, vous pouvez contourner ce problème en copiant le fichier à partir du SDK dans Xcode 9.4 (et de libstdc ++. *. Dylib dans le simulateur iOS), mais ce n'est pas long. Solution. Vous devez contacter le fournisseur de ces bibliothèques et demander les versions construites avec libc ++.

Vous pouvez le copier depuis l'ancien Xcode (9.4). Ça devrait marcher.

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
19
Antigp

libstdc++ est supprimé dans iOS 12.

J'aimerais avoir une meilleure source qu'un ingénieur Apple sur Twitter, mais c'est tout ce que j'ai.

@jeremyhuPSA: libstdc ++ est parti du SDK iOS 12.0 (il est présent dans le runtime pour la compatibilité binaire). Ses jours sont également numérotés sur macOS. Migrez vers libc ++ si vous ne l'avez pas déjà fait. # WWDC2018 #cplusplus

Edit: Voici une meilleure source, notes de patch Xcode 10

La construction avec libstdc ++ est déconseillée avec Xcode 8 et n'est pas prise en charge dans Xcode 10 lors du ciblage d'iOS. Les projets C++ doivent maintenant migrer vers libc ++ et il est recommandé de définir une cible de déploiement d'iOS 7 ou ultérieure. Outre la modification du paramètre de construction de la bibliothèque standard C++, les développeurs doivent également auditer les drapeaux de l'éditeur de liens et les dépendances cibles pour supprimer les références à libstdc ++ (y compris -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd et libstdc ++. 6.0. 9.dylib). Les dépendances de projet telles que les archives statiques construites avec libstdc ++ devront également être reconstruites avec libc ++. (40885260)

15
Oscar Apeland

Extrait de Notes de publication de Xcode 10 Beta 2 et applicable à toutes les versions futures de Xcode:

La construction avec libstdc ++ est déconseillée avec Xcode 8 et n'est pas prise en charge dans Xcode 10 lorsque ciblant iOS. Les projets C++ doivent maintenant migrer vers libc ++ et il est recommandé de définir un fichier cible de déploiement d'iOS 7 ou version ultérieure. Outre le changement du paramètre de construction de la bibliothèque standard C++, les développeurs doivent auditer les drapeaux de l'éditeur de liens codés en dur et les dépendances cibles pour supprimer les références vers libstdc ++ (y compris -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd et libstdc ++. 6.0.9.dylib) . Les dépendances de projet, telles que les archives statiques construites avec libstdc ++, devront également disposer de être reconstruit contre libc ++. (40885260)

Apple ne supportera probablement plus jamais libstdc ++.

8
Cœur

Xcode 10 annule la bibliothèque libstdc ++ avec la bibliothèque intégrée Nous devons donc copier le fichier dans la bibliothèque à la main.

copiez le fichier: (libstdc ++. 6.0.9.tbd) et (libstdc ++. 6.tbd) dans:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

et

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 

(Veuillez noter la distinction "iPhoneOS" et "iPhoneSimulator")

nettoyer xcode et le reconstruire.

Ici est le fichier.

8
刘俊利

J'ai rencontré le même problème après la mise à jour vers xcode 10. J'ai résolu ce problème en téléchargeant libstdc ++. 6.0.9.tbd et libstdc ++. 6.tbd à partir de https://github.com/Kila2/libstdc-. 6.0.9.tbd .

puis j'ai copié ces fichiers dans mon dossier de projet . Après cela, j'ai ajouté ces bibliothèques dans Frameworks and Libraries liés en procédant comme suit: Project> Target> General> Frameworks and Libraries, cliquez sur (+)> Cliquez sur "Ajouter Autre '> Accédez à votre dossier de projet dans' Ouvrir le fichier 'et sélectionnez ces bibliothèques, puis ajoutez-les.

Maintenant, lancez le projet, il fonctionnera parfaitement.

3
Tahir Pasha

Pour moi, -l "stdc ++. 6" a été ajouté au pod install Je l'ai trouvé dans "Pods/Target\Support\Fichiers/Pods-SomeTarget/Pods-SomeTarget.debug.xcconfig".

Pour résoudre le problème, vous pouvez utiliser le gestionnaire post_install dans Podfile: 

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "Pods-SomeTarget”
            puts "Updating #{target.name} OTHER_LDFLAGS"
            target.build_configurations.each do |config|
                xcconfig_path = config.base_configuration_reference.real_path
                xcconfig = File.read(xcconfig_path)
                new_xcconfig = xcconfig.gsub('-l"stdc++.6" ', '')
                File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
            end
        end
    end
end
2
Sergey Teryokhin

La réponse de Jeremy Huddleston Sequoia m'a donné la direction pour résoudre ce problème. Avant de poursuivre, assurez-vous d'avoir lu sa réponse.

Même après la mise à jour de la bibliothèque C++ dans votre projet, vous pouvez être confronté à une erreur de liaison lorsque Xcode ne peut pas lier votre projet à cette bibliothèque libstdc ++. 

La solution est la suivante: si libstdc ++ est inclus dans la structure de votre projet, il est peut-être devenu rouge car Xcode n'a pas pu trouver la référence correspondante. Si vous supprimez cette entrée de la structure du projet et ajoutez la nouvelle bibliothèque à la place (libc ++), vous êtes prêt à partir.

1
Anup

Comme Apple supprime libstdc ++ dans Xcode 10.0, vous pouvez donc essayer de copier manuellement le fichier dans lib si vous souhaitez résoudre le problème.

1 fichier .iPhoneOS et iPhoneSimulator

copier le fichier: libstdc++.6.0.9.tbd et libstdc++.6.tbd et libstdc++.tbd dans:

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

2 fichier .iOS.simruntime

copier le fichier: libstdc++.6.0.9.dylib et libstdc++.6.dylib et libstdc++.dylib dans: 

  • / Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
1
RamboLu

Pour simulateur, il suffit de retirer libstdc ++. 6.0.9.tbd duFrameworks and Libraries.

0
tounaobun

Copiez-le à partir de l'ancien Xcode (9.4) fonctionnera pour les périphériques iOS physiques . Pour les problèmes de simulateur avec Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator. On dirait que Apple a supprimé la compatibilité avec le simulateur. Il suffit de télécharger le simulateur iOS 11.4 et de l'exécuter.

0
Fan

Vous devez supprimer libstdc ++ des autres drapeaux de l'éditeur de liens dans votre projet xcode.

Vérifie ça :  enter image description here

0
iosMentalist

J'ai pu résoudre le problème de construction en copiant les fichiers nécessaires de 9.4 à 10.1, à la fois les librairies de plate-forme et le moteur d'exécution. Mais cela ne résout que les cas avec simulateur. Mon application reste bloquée au démarrage (écran de démarrage) lors de l'exécution sur un périphérique physique. 

0
Chen Wang