2013-07-29 10 views
9

編集/更新/注:clangにlibstdC++を使用させてください。これまで私にとって本当にうまくいっています。私が実行して成功することができました過去にはLinux上でclang用にlibC++を構築するための認可された方法は何ですか?

===============================

cmakeと何かがありましたが、ちょうどhttp://llvm.org/svn/llvm-project/libcxx/trunkプロジェクトツリーのlibディレクトリ内にあるbuilditスクリプトを発見しました。

このbuilditスクリプトは、先に使用したcmakeのアプローチであるlibsupc++を使用していないようです。たとえば、this guideは、cmakeという1つの補題を表示して、libc++のメークファイルを生成します。これは、コンパイルとインストールを処理することができます。

私の質問は、LLVM-libc++を作成するこれらのさまざまな方法の違いは何ですか?彼らは異なった振る舞いをしますか?

builditスクリプトはインストールに役立たないようです。ライブラリを適切にインストールする方法はどこにありますか?私の以前のlibC++でcmakeをビルドしたので、リンカのフラグ(および-Lのパス)に常に-lc++を追加する必要がありました。これはOS Xのメイクファイルでは必要ありません。

+0

を使用して正常にアーチのLinuxクランパッケージでそれを使用しました。 'buildit'スクリプトは' libC++ 'とリンクしているようですので、ここでは驚くべきことは何もないと思います。それでも、私はLLVMについてもっと知っている人が一般的に説明してくれてありがたく思っています。 –

+0

'libsupC++'は、GCCの 'libstdC++'にいくつかのABI関連(とその他の)機能を提供します。 – rubenvb

答えて

3

libc++ websiteには、libC++を構築する方法の概要が素敵です。

私はCMake + libc++abiを使用することをお勧めします。

builditスクリプトを使用しているArch Linux User Repository build scriptも参照してください。私はそれからのlibC++をインストールし、私は `libsupcが++`で、どうやらそれはGCCの `のlibC++`のサブセットであるだけで何にいくつかのより多くを読ん

clang++ -std=c++11 -stdlib=libc++ -lc++abi 
+3

まあ、私はCentOS 6.4です。これは、多くの項目が....古いので、仕事をするために通常より少し硬めにしています。 4.4.7ディレクトリに加えて '/ usr/include/C++/4.4.4;/usr/include/C++/4.4.4/x86_64-redhat-linux'という余分なパスを追加しなければならず、また' cxxabi 'cmake'呼び出しが成功する前に' -forced.h'(これは '4.4.4 /'であった)を 'bits/cxxabi_forced.h'に書き出します。これはあまりにも痛いです!これは私のマシンのinitスクリプトに入りますので、しばらくお待ちください。しかし、誰かがそれほど痛みを伴わない何かを考え出す必要があるのは、これが唯一の仕事ではない「cmake」だからです。 –

+1

私は 'cxxabi.h'内で' cxxabi-forced.h 'から '#include'を' bits/cxxabi_forced.h'に変更してlibC++を取得しなければなりませんでした。 –

+1

これはもう動作しません(SVN libC++を使用)。 libC++でコンパイルしようとすると、 '-std = C++ 0x -stdlib = libC++'でコンパイルしようとすると '' std :: nested_exception ''のためのvtableへの不確定な参照が発生します。 –

関連する問題