cygwinのソース コードからLLVMと clangをビルドできますか?
LLVM と Clang をビルドするのにどのくらいかかりますか? VirtualBoxでビルドしようとしているので、2時間くらいかかります。
cygwinのソース コードからLLVMと clangをビルドできますか?
LLVM と Clang をビルドするのにどのくらいかかりますか? VirtualBoxでビルドしようとしているので、2時間くらいかかります。
これにある程度の労力を費やしたので、私の発見のいくつかを共有する価値があると思います. Cygwin 1.7.28 (x86) で Clang + LLVM 3.4をビルドすることができました。
Cygwin の最近の更新により、Clang で使用されるシステム ヘッダーの 1 つが壊れたようです。Cygwin メーリング リストで不完全なパッチが提供されました。これが完全なパッチです。
Clang++ (3.4 以降) は、C++ 標準ライブラリのインクルード ディレクトリを引き続きハードコーディングします (GCC によって提供されるものに依存します)。パスが正しくない場合 (Cygwin ではよくあることです)、C++ ヘッダー ( など<iostream>
) をインクルードするときに問題が発生します。これを修正するには、次の 2 つの方法があります。
コードに正しいパスを追加できます。これは、変更のたびに Clang++ を再コンパイルする必要があり、Cygwin では時間がかかるため、柔軟性に欠けます。clang/lib/Frontend/InitHeaderSearch.cpp
これを行う場合は、 389 行目のコードを見つけることができます。
または、Clang が期待する場所にシンボリック リンクを作成することもできます。
次のコマンドを実行して、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 のドキュメントのすべてがここに適用されます。
ソースをダウンロードします。Clang だけが必要な場合でも、LLVM ソース コードは必要です。
Clang と LLVM の両方を抽出したら、Clang のtools
ディレクトリを LLVM のサブディレクトリに移動します。
mv clang-X.Y llvm-X.Y/tools/clang
次の構成から始めます。
./configure --enable-optimized
Clang は自分自身をコンパイラとして選択することを好むため、Clang のインストールがまだ機能していない場合は、環境変数CC
とCXX
環境変数を使用して、代わりに GCC を使用するように強制します。
すべてがうまくいけば、clang と llvm の両方をビルドするビルドとインストールを開始できます。
make && make install
llvm/clang を開発しますか、それとも llvm/clang で開発しますか? 後者の場合、cygwin リポジトリから llvm-3.1/clang バイナリをインストールしないのはなぜですか? 私の Windows 7 ではうまく動作します。