Les premiers couples sont trop longs pour faire référence. J'obtiens cette erreur lorsque j'essaye de compiler clang++ -stdlib=libc++ ../main.cc ...
avec clang et libc ++ du 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é seul comme libstdc ++, il doit être lié avec libc ++ abi. Cependant, libc ++ abi n'est pas encore terminé, donc utiliser libc ++ semble être un peu incomplet pour le moment, mais c'est toujours mon premier choix quand il se termine.
MISE À JOUR 5/26/2012: libc ++ abi est maintenant terminé pour C++ et j'ai utilisé clang ++ comme suit avec succès clang++ -std=c++11 -stdlib=libc++ -lc++abi
.
Je crois que libc ++ ne prend pas encore en charge toutes les fonctions d'exception. Voir la page d'état:
http://libcxxabi.llvm.org/spec.html
Vous pourriez probablement établir un lien avec libstdc ++ de gnu
Voici ce qui fonctionne pour moi avec les packages Ubuntu Vivid pour clang et libc ++:
clang++ -std=c++11 -stdlib=libc++ <object files> -lc++abi -lsupc++
Il est important que les fichiers objets arrivent avant le -l
drapeaux, par exemple lorsque vous utilisez des exceptions. De toute évidence, cela ne sera toujours pas lié si vous utilisez des bibliothèques compilées avec libstdc ++ et utilisez n'importe quel type STL dans ces interfaces.
Il semble que vous utilisiez la gestion des exceptions, mais elle n'est pas activée dans le compilateur. Essayez de transmettre -fexceptions à la ligne de commande.