クロスコンパイラの構築に一般的に使用されているため、これはまだサポートされているはずです。
実際、gcc 4.6.0 と binutils 2.21 (適切なバージョンの gmp、mpc、および mpfr を使用) でこれを行ったところ、次のように動作するように見えました。
- ビルドしようとしているもののすべてのアーカイブ (gcc-4.6.0.tar.bz2、binutils-2.21.tar.bz2 など) を新しいディレクトリに取得します。
src
このディレクトリでそれらをすべて un-tar すると、gcc-4.6.0/
binutils-2.21/
gmp-5.0.2/
互いに並んで座っていることになります
tar jxvf gcc-4.6.0.tar.bz2
... (unpack others here, watch file lists scroll past)
cd gcc-4.6.0
リンクにバージョン番号を付けずに、gmp、mpc、および mpfr ディレクトリをシンボリック リンクします。
ln -s ../gmp-5.0.2 gmp
ここで、gcc ディレクトリに存在しない binutils ディレクトリからすべてをシンボリック リンクします。したがって、既に存在するものはすべて優先されますが、binutils ツールはビルドに表示されます。
for file in ../binutils-2.21/* ; do ln -s "${file}" ; done
ディレクトリを変更し、ビルド ディレクトリを作成して、これらすべてをソースとは別にビルドします (これは常に推奨される方法であり、ソース ディレクトリ内でビルドするよりも信頼性が高くなる傾向があります)。
cd .. ; mkdir build
この時点で、次のような一連のディレクトリとリンクが作成されているはずです。
binutils-2.21/
build/
gcc-4.6.0/
gmp -> ../gmp-5.0.2
mpc -> ../mpc-0.9
mpfr -> ../mpfr-3.0.1
bfd -> ../binutils-2.21/bfd
binutils -> ../binutils-2.21/binutils
gas -> ../binutils-2.21/gas
... (lots more symlinks for binutils here, plus existing gcc stuff)
gmp-5.0.2/
mpc-0.9/
mpfr-3.0.1/
構成するために渡す必要があるオプションを使用して、このディレクトリからすべてを構成します。
../gcc-4.6.0/configure --prefix=/foo/bar --enable-languages=c,c++,ada
ビルド、待機、インストール (make -j4
しばらく時間がかかるため、いくつかのビルドを並行して取得するには、おそらくここで or so を使用することをお勧めします):
make -j4 ; make install
宛先がまだパスにない場合はパスに追加します (ステップ/etc/ld.so.conf
中にライブラリをインストールすることに関するメッセージに記載されているように、これが で指定されたものの外にある場合は、おそらく LD_LIBRARY_PATH への lib dir を追加します)。make install
バージョン。
新しいシェルを開いたら、このインストール済みバージョンを使用していることを確認する価値があるでしょう。
`which gcc`
と
`which as`
..また、バージョンが期待どおりであることも次のとおりです。
`gcc --version`
と
`as --version`
..(もちろん)コードベースで解放する前に、インストールされたバージョンがいくつかの簡単な例で実行可能ファイルを正常にビルドすることをテストします:)
編集: 以下のコメントには、一緒に動作することが知られているいくつかのバージョンのセットが含まれています。すべての組み合わせが機能するわけではないため、記載されている組み合わせとは異なる組み合わせについて試行錯誤する必要がある場合があります。
かなり後の編集: gdb もこのビルドに含めることができます (ここでも互換性のあるコンポーネントのバージョンが必要です - コメントを参照してください)。これを binutils の後に同様の方法で追加するfor f in ../gdb-8.1.1/* ; do ln -s "${f}" ; done
と、ビルドが自動的に取得します。