Compilation avec Clang à l'aide de la Libc++ undefined références
Les deux premiers sont trop longues pour référence. J'ai cette erreur lorsque j'essaie de compiler clang++ -stdlib=libc++ ../main.cc ...
avec clang et de la libc++ depuis le SVN.
error: undefined reference to 'typeinfo for char const*'
error: undefined reference to '__cxa_allocate_exception'
error: undefined reference to '__cxa_throw'
/tmp/cc-pbn00y.o:../main.cc:function std::__1::deque<double, std::__1::allocator<double> >::__add_back_capacity(): error: undefined reference to '__cxa_begin_catch'
/tmp/cc-pbn00y.o:../main.cc:function std::__1::deque<double, std::__1::allocator<double> >::__add_back_capacity(): error: undefined reference to '__cxa_rethrow'
/tmp/cc-pbn00y.o:../main.cc:function std::__1::deque<double, std::__1::allocator<double> >::__add_back_capacity(): error: undefined reference to '__cxa_end_catch'
/tmp/cc-pbn00y.o(.eh_frame+0xbd3): error: undefined reference to '__gxx_personality_v0'
SOLUTION: Grâce à l'une des réponses, je connais la solution. libc++ ne peut pas être utilisé par lui-même comme libstdc++, il est à mettre en lien avec libc++abi. Cependant, la libc++abi n'est pas encore complet, donc à l'aide de la libc++ semble un peu incomplète pour le moment, mais c'est toujours mon premier choix quand il se termine.
Mise à JOUR 5/26/2012: libc++abi est maintenant terminée pour le C++, et j'ai été en utilisant clang++ comme suit avec succès clang++ -std=c++11 -stdlib=libc++ -lc++abi
.
- Tout ce qui est mentionné undefined références sont définis dans la libc++abi: abi-laboratoire.pro/...
Vous devez vous connecter pour publier un commentaire.
Je crois libc++ ne prend pas en charge tous les exception des fonctions encore. Voir la page de statut:
http://libcxxabi.llvm.org/spec.html
Vous pourriez probablement un lien à l'encontre de gnu libstdc++
typeinfo for char const*
et__gxx_personality_v0
.-stdlib=libc++
mais ce qui a fonctionné pour moi a été-lstdc++.6
Voici ce qui fonctionne pour moi avec Ubuntu Vives paquets de clang et de la libc++:
Il est important que les fichiers de l'objet avant la
-l
drapeaux, par exemple, lorsque vous utilisez des exceptions. De toute évidence, ce ne sera toujours pas le lien si vous utilisez les bibliothèques compilées contre libstdc++ et utiliser tous les types STL dans ces interfaces.Cela semble que vous utilisez la gestion des exceptions, mais elle n'est pas activée dans le compilateur. Essayer de passer -fexceptions à la ligne de commande.