2011-03-08 13 views
4

LLVMコンパイラツールチェーンには、通常のgccと互換性のあるgccがあります。 llvm-gccを使う利点は、ランダムなアーキテクチャにコンパイルしようとすると、普通のgccがそのようなターゲットとは言わないことを意味する任意のターゲットに行き着くということです。例えば、mips-apple-darwin。しかし、llvm-gccは、実際には、mipsプロセッサ上でMac OS X用のコンパイラをビルドします。llvm用のbinutilsはありますか?

ただし、ランダムなターゲットをビルドするには、そのターゲット用にビルド済みのビルドが必要です。ですから、もしllvmがコンパイルするが、binutilsはコンパイルできないターゲットを持っていれば、GNU Binutilsはそのターゲットをサポートしていないので、コンパイラを作ることはできません。

だから...ここに質問があります:GNU Binutilsと互換性のあるllvm-gccのような同等のllvm-binutilsはありますか? (任意の目標ではなく、リストから1までのビルド1を意味する。)

EDIT:

任意のことで、私はLLVM-GCCを実行したとき、私はターゲットを選択していない意味、私はターゲットを選びます私はllvm-gccをコンパイルします。意味:mips-apple-darwinのGCCをコンパイルしようとすると、サポートされていないターゲットが得られます。しかし、mips-apple-darwin用のllvm-gccをビルドすると、mips-apple-darwin-asとmips-apple-darwin-ldがある限り動作します。

+0

注:LLVM 2.9はトラック上にあり、llvm-gccをサポートする最後のバージョンである必要があります。 3.0以降では、LLVMはCLangまたはDragon Eggを使用します。 –

答えて

2

私が知る限り、LLVMは任意のターゲットに対してコンパイルしません。ターゲットに合わせるためのインクルードと定義がすべて必要です。通常、llvmには、前述のターゲットのコードを生成するためのバックエンドがあります。 「CまたはC++コードをプラットフォームに依存しないLLVMビットコードにコンパイルできますか?」を参照してください。 http://llvm.org/docs/FAQ.htmlから。

llvmはGNU binutilsを使用せず、llvmには独自の 'binutils'があり、コードを生成します(LLVMコアプロジェクトと呼ばれます)。逆アセンブラとデバッガは、LLDBプロジェクトの一部です。

ここで、LLVMはいくつかの独立性をもたらしますが、それは言語レベルです。あなたのプロジェクトは、C/C++、Ada、Fortranなどでコード化することができます。llvmには、コードを中間表現で変換する機能があります。そのIRは最終的にコードを生成します。

1

llvm-gccは任意のターゲットをサポートしていません。 llvm-gccは、特定のターゲットに対して特別に構築する必要があります。 clang + LLVMはできます。私はellcc:http://ellcc.orgでそれを正確に実行しようとしています。私は組み立てとリンクのためにbinutilsを使用しています。

関連する問題