Après la mise à jour de la version 10.0 de Xcode Version, commencez à obtenir l'erreur "ld: library non trouvée pour -lstdc ++. 6". le même code fonctionne très bien dans Xcode 9.2
Également mis à jour macOS à 10.13.5
La solution rapide consiste à copier tous les fichiers libstdc ++. * De l'ancien Xcode (9.4) vers le nouveau Xcode (10.x).
Pour appareil:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.*/Applications/Xcode10.app/Contents/Developer/Platforms/phone. plate-forme/développeur/SDK/iPhoneOS.sdk/usr/lib /
Pour simulateur:
cp /Applications/Xcode9.4.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/libstdc++.* /Applications/Xcode10.app/Developer/Developer plate-forme/développeur/SDKs/iPhoneSimulator.sdk/usr/lib /
Vous aurez ce problème lorsque vous ciblez l'application iOS. C'est indiqué dans la note de version:
Avis de dépréciation :
La compilation avec libstdc ++ était obsolète avec Xcode 8 et n'est pas prise en charge dans Xcode 10 pour cibler 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 indicateurs de lieur 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)
Source: Notes de publication de XCode Beta 2
Note latérale:
Vous devez être connecté pour accéder à la page.
Le lien peut casser dans la prochaine version bêta (les URL changent), mais c'est dans la partie Développeurs/Télécharger
XCode 10 étant officiellement publié avec sa note de version , il reste toujours tel quel:
La compilation avec libstdc ++ était obsolète avec Xcode 8 et n'est pas prise en charge dans Xcode 10 pour cibler iOS . Les projets C++ doivent maintenant migrer vers libc ++ et il est recommandé de définir une cible de déploiement de macOS 10.9 ou version ultérieure, ou iOS 7 ou une version ultérieure. Outre la modification du paramètre de construction de la bibliothèque standard C++, les développeurs doivent également auditer les indicateurs de lieur 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)
Comme indiqué ci-dessus, lstdc ++ est supprimé de Xcode 10. Pour résoudre ce problème,
Aller à la cible -> BuildPhases -> Link Binary With Libraries
Recherchez lstdc ++ et supprimez-le.
Vous pouvez maintenant avoir une erreur dans certains frameworks qui utilisent la bibliothèque "lstdc ++" mentionnée ci-dessus. Vous devez maintenant mettre à jour ce framework ou le supprimer pour que Xcode puisse le construire correctement.
CXXFLAGS += -stdlib=libc++
votre bibliothèque externe Makefile et les instances supprimées de -stdlib=stdlibc++
Cela échouait pour moi lorsque j'essayais de faire un make install
. Au lieu de cela, j'ai couru make install -stdlib=libc++
, qui a fait l'affaire.