9

cygwinのソース コードからLLVMと clangをビルドできますか?

LLVM と Clang をビルドするのにどのくらいかかりますか? VirtualBoxでビルドしようとしているので、2時間くらいかかります。

4

3 に答える 3

16

これにある程度の労力を費やしたので、私の発見のいくつかを共有する価値があると思います. Cygwin 1.7.28 (x86) で Clang + LLVM 3.4をビルドすることができました。

Cygwin 固有

マシン整数型の修正

Cygwin の最近の更新により、Clang で使用されるシステム ヘッダーの 1 つが壊れたようです。Cygwin メーリング リストで不完全なパッチが提供されました。これが完全なパッチです。

C++ 標準ライブラリのインクルード ディレクトリ

Clang++ (3.4 以降) は、C++ 標準ライブラリのインクルード ディレクトリを引き続きハードコーディングします (GCC によって提供されるものに依存します)。パスが正しくない場合 (Cygwin ではよくあることです)、C++ ヘッダー ( など<iostream>) をインクルードするときに問題が発生します。これを修正するには、次の 2 つの方法があります。

  • コードに正しいパスを追加できます。これは、変更のたびに Clang++ を再コンパイルする必要があり、Cygwin では時間がかかるため、柔軟性に欠けます。clang/lib/Frontend/InitHeaderSearch.cppこれを行う場合は、 389 行目のコードを見つけることができます。

  • または、Clang が期待する場所にシンボリック リンクを作成することもできます。

    1. 次のコマンドを実行して、Clang++ によって検索されるディレクトリを特定します。

      echo | clang++ -v -x c++ -
      

      次の行に沿って何かを見つける必要があります

      ignoring nonexistent directory "/usr/lib/gcc/i686-pc-cygwin/X.Y.Z/include/c++"
      

      おそらくいくつかの異なるバージョン番号が存在するでしょうX.Y.Z。それらのいずれかを選択し、正しい場所へのシンボリック リンクを作成します。

      ln -s A.B.C /usr/lib/gcc/i686-pc-cygwin/X.Y.Z
      

      A.B.C現在インストールされている GCC のバージョンです。

カラー診断

Clang から色付きのエラー メッセージが必要な場合は、事前に Cygwin セットアップでncurses 開発パッケージ( ) をインストールしてください。libncurses-develこれがないと、端末が色をサポートしているかどうかを LLVM が検出できないため、Clang は無色モードにフォールバックします。

で色を強制的に表示することはできますが-fcolor-diagnostics、GCC のリンカはこのフラグでチョークするため、使用するのが非常に不便です。

システムに依存しない

これは最も簡単な (そして最も長い) 部分であり、ほとんどの場合、LLVM + Clang のドキュメントのすべてがここに適用されます。

  1. ソースをダウンロードします。Clang だけが必要な場合でも、LLVM ソース コードは必要です。

  2. Clang と LLVM の両方を抽出したら、Clang のtoolsディレクトリを LLVM のサブディレクトリに移動します。

    mv clang-X.Y llvm-X.Y/tools/clang
    
  3. 次の構成から始めます。

    ./configure --enable-optimized
    

    Clang は自分自身をコンパイラとして選択することを好むため、Clang のインストールがまだ機能していない場合は、環境変数CCCXX環境変数を使用して、代わりに GCC を使用するように強制します。

  4. すべてがうまくいけば、clang と llvm の両方をビルドするビルドとインストールを開始できます。

    make && make install
    
于 2014-02-17T04:17:19.003 に答える
10

Clang ( x86x86_64 ) および LLVM ( x86x86_64 ) は現在、Cygwin パッケージとして利用できます。

Cygwin パッケージをインストールすると、問題が大幅に軽減されます

于 2013-01-12T08:54:50.787 に答える
3

llvm/clang を開発しますか、それとも llvm/clang で開発しますか? 後者の場合、cygwin リポジトリから llvm-3.1/clang バイナリをインストールしないのはなぜですか? 私の Windows 7 ではうまく動作します。

于 2012-11-21T17:38:28.453 に答える