2015-09-18 17 views
6

最近のclang + llvm + libC++をビルドしたいと思います。私は現在、Clangのバイナリパッケージを手に入れることができないシステム(CentOS 6.6に基づいています)にいくつかの環境変数を設定することでclangを構築するために十分なGCC(例:4.9)を設定できます。clangとlibC++を一緒に構築する適切な方法(ブートストラップ)

私は

  • ポータブルであることを打ち鳴らすの私のバージョンが欲しい、それが(例えば-rpath $ORIGIN使用)は、ハードコードのパスではありません
  • どちらも(つまり、システムのgccも、輸入GCC 4.9に依存して、
  • 特に、コンパイラ、ライブラリとしてのコンパイラlibclang.so、および新しいコンパイラでビルドされたプログラムは、libstdC++に依存してはいけませんが、新しくビルドされたlibC++を使用する必要があります。

私はこれを行うことができますが、それは入れて打ち鳴らす、LLVMを含み、libcの++、libcの++ ABI(物事私が忘れているかもしれない)一本の木で、その後、フラグの多くを設定し、1つのビルドディレクトリから打ち鳴らすの構築盲目的に作成し、2番目のビルドディレクトリから再度ビルドします。

libC++でclangをブートストラップする別の適切な方法はありますか?上記のように、llvm & clangの公式バイナリは自立しているので、私はそこにいるはずだと信じています。

+0

"公式の"パッケージはおそらく、あなたの方法(すべてを単一のソースツリーに入れる)か、ずらしたビルド(libC++を使わないClangのビルド、新しいclangを使ったlibC++のビルド、libC++の新しいclangのビルド) –

+0

さて、より大きなディストリビューションのソースパッケージをダウンロードして、そのディストリビューションの仕組みを見てみましょう。 –

答えて

6

私はこれについて自分自身が不思議に思っていました.LIBbC++でclangをブートストラップする適切な「祝福された」方法があるとは思われません。私の経験で

、リポジトリからインストール打ち鳴らすはのlibstdC++に依存し、そのhttp://www.llvm.org/releases/download.html#3.7.0で入手可能なバイナリ ディストリビューションからインストール打ち鳴らすん(私はUbuntuの14.04のための1つを試してみました)。レポクラングとllvm.orgの違い:

  • 私はlibC++でレポクラングを見たことがありません。私はそれを別に に構築しなければならなかった。 llvm.orgのClangにはlibc + +が付いています。
  • llvm.org clangは、ライブラリの場所が、 (ハードコードされた場所)からの相対位置にあるように見えます。 libディレクトリにあるいくつかのヘッダ(!)についても同じことが言えます。リポジトリとllvm.orgからその打ち鳴らすを考慮

はのlibstdC++に依存し、私は少なくともない私がプレイしたLinuxシステム上で、その依存関係を取り除くことのない適切なWA yが存在しないことを言うだろう、これUbuntu、Amazon Linux、CentOS、Fedoraなどがあります。

しかし、libstdC++に依存するclangを使用しても、libstdC++ではなくlibC++に依存するプログラムを作成することができます。すでに見つかったように、libstdC++に依存しないclang + llvmセットアップを構築することは可能ですが、それらのすべてのフープを飛び越える必要はありません。

あなたはそれが参考場合、私はまだこのすべてを試していると私は何か面白いものに遭遇した場合、この答えを更新しますhttp://www.omniprog.info/clang_no_gcc.html

で、この上の短い記事があります。