最初のカップルは参照するには長すぎます。 SVNからclangとlibc ++を使用してclang++ -stdlib=libc++ ../main.cc ...
をコンパイルしようとすると、このエラーが発生します。
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'
解決策:答えの1つに感謝します。解決策を知っています。 libc ++をlibstdc ++のように単独で使用することはできません。libc ++ abiとリンクする必要があります。ただし、libc ++ abiはまだ完全ではないため、現時点ではlibc ++の使用は少し不完全なようですが、それが完了したときの私の最初の選択肢です。
PDATE 5/26/2012: libc ++ abiがC++用に完成し、次のようにclang ++を正常に使用していますclang++ -std=c++11 -stdlib=libc++ -lc++abi
。
Libc ++はまだすべての例外関数をサポートしていないと思います。ステータスページをご覧ください。
http://libcxxabi.llvm.org/spec.html
あなたはおそらくgnuのlibstdc ++に対してリンクすることができます
Clangとlibc ++用のUbuntu Vividパッケージを使用すると、次のようになります。
clang++ -std=c++11 -stdlib=libc++ <object files> -lc++abi -lsupc++
オブジェクトファイルが-l
フラグの前に来ることが重要です。例外を使用するとき。 libstdc ++に対してコンパイルされたライブラリーを使用し、それらのインターフェースでSTLタイプを使用する場合、これはまだリンクしません。
これは例外処理を使用しているようですが、コンパイラで有効になっていません。コマンドラインに-fexceptionsを渡してみてください。