2012-03-10 10 views
2

私は、sysrootアプローチを使用してGCC 4.6.3でARMクロスツールチェーンを構築しています。私がLFSの指示に従い、gmp、mpfrとmpcソースフォルダをGCCソ​​ースフォルダにコピーすると、mpcrがパスが正しいにもかかわらずmpcが見つからないため、ビルドが失敗します。ARMツールチェーンビルド

静的にリンクされたgmp、mpfr、mpcを手動でコンパイルすると、GCCビルドはエラーなしで完了します。

私がgch、mpfr、mpcをtoolchainビルドディレクトリの任意の場所にインストールする必要がある場合は、ツールチェーンが終了したときに削除されるので、GCCビルドのさまざまな段階で利用できます。接頭辞を$ SYSROOTに指定すると、ツールチェーンの永続的な部分になりますか?何が一番正しいのですか?

答えて

0

私は、クロスコンパイラのインフラストラクチャでは異なるアプローチを採用しています。私はディレクトリ$HOME/localを持っており、すべての期待されるサブディレクトリはbin/, lib/, include/, etc.$HOME/local/binであり、$PATH$HOME/local/libで、$LD_LIBRARY_PATH(またはダーウィンの場合は$DYLD_LIBRARY_PATH)です。

Iその後、構築して、--prefix=$HOME/localに、GMP、MPFR、MPCのインストール:

> ./configure --prefix=$HOME/local --enable-cxx [--disable-fft] 
> ./configure --prefix=$HOME/local --with-gmp=$HOME/local 
> ./configure --prefix=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local 

私は、高速で一般的にクロスしてgccのために動作しませんこれらのパッケージのためのプラットフォーム依存のフラグを使用することができますトリプル--target

> env CFLAGS="-pipe -Wall -O2 -march=core2" CXXFLAGS="..." ./configure ... 

利点は、私は、クロスコンパイラインフラストラクチャ、GMP、MPFRをビルドするところはどこでも、MPCライブラリは、などが含まれ、アクセス可能であり、である - と同じLIBSが複数のクロスのために使用することができます-コンパイラ。すなわち、私はx86_64-pc-elf、ARM EABIを自立した4.6.x AVRを持っています。各gcc configureオプション使用:私は(私は頻繁に行う)ツールチェーンのビルドアップfsckをするとき

明らか
> --with-mpc=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local 

を、少なくとも私は、ビルドのこの部分を繰り返す必要はありません。

0

クロスコンパイラの構築は面倒な作業です。クロスコンパイラを構築するために必要なすべての手順を自動化するのになぜcrosstool-NGを使用しないのですか?