2013-02-08 13 views
5

非常に古いGCC/GlibCバージョンを持つCentOS 6マシンで作業しています。私は最新のgcc、ld.goldを最近のbinutilsで、そして最近のglibcを改良するために、最新のバージョンまたは少なくとも最近のバージョンのglibc、binutils、gccツールチェーン全体を構築したいと思っています。CentOSでツールチェーン全体を構築するチュートリアル

私はツールチェーン全体をいくつかの別個のディレクトリに置いて、既存のシステムファイルに影響を与えたくありません。また、gccを使用するときに、-I/some/directory/includeと-L/some/directory/libまたは他のパラメータを指定する必要がないように、gccを--sys-rootでビルドしたいと考えています。また、生成された実行可能ファイルは自動的に新しいld-linux-xxxxxプログラムローダーを使用して自動的に新しいlibc.soを見つけます。

このタスクに関するチュートリアルがありますか?

+0

旧システムのchrootに最新のCentOSをインストールできませんか? –

+0

http://gcc.gnu.org/install/からこちらの手順を試してみましたか?はいの場合、どこにいらっしゃいましたか?研究の意思を示してください。 –

+0

私は実際にそれらを試してかなり長い時間を費やしましたが、実際には全く動作しません。主なトラブルの原因はglibcです。ld-linux-xxxxが正しいlibc.soを見つけられず、gccが見つからない間違った場所にヘッダがインストールされています。 –

答えて

-2

最新のツールチェーンが必要な場合は、Fedoraに移行する方がよいでしょう。

もしあなたが/できない場合は、CentOSとFedoraのソースRPMとしてその断片を入手し、それらを解凍し、Fedoraからソースとパッチを盗んでCentOSを修正してくださいシステムパッケージを無効にして、バージョンを修正し、他の場所にインストールするように修正してください。システムをあまりにも台無しにしないでください!/usr/localが気になります。このピースは少なくともbinutils、gccです。

+0

この命令はあまりにも抽象的です私は続くことができません。 –

+0

@ carando、はい、それはかなり複雑です。そして、重大な壊れたシステムで終わらないという保証はありません。そのツールチェーンを使って構築したものは、他の場所では実行されません。 C++ 2011の機能が必要な場合は、最新のシステムを入手して、余計な作業をせずにシームレスに使用することができます。新しい機能を使いこなす場合は、仮想マシンでFedora 18を実行することさえできます。またはRHEL/CentOS 7を待つ... – vonbrand

-1

私は知りませんなぜこれが必要ですか?他のコンピュータ用にコンパイルする必要がある場合は、ターゲットと同じOSを実行している仮想マシンを使用することをお勧めします。もっと簡単に!

+0

私はクロスコンパイルを行っていません。私はマシン自体にコンパイラが必要です。私が言及したように、centos上のツールチェーンは古すぎ、C++ 11の機能をサポートしていません。また、ld.goldもありません。 VMは、centosマシンがVM自体で実行されているため、オプションではありません。 –

0

コンパイラはglibcに非常に依存していますが、chrootされたシステムでコンパイラをビルドすることはできますが、この新しいコンパイラでビルドするプログラムで必要なライブラリもすべてビルドする必要があります。あなたが行うことができます 最高のは、新鮮な新しいシステム(VMまたは何でも)を使用するか、または既存の1

-2

フォロー1を渡したとのbinutils、gccの、glibcのとのlibstdC++のためLinux From Scratchの2を渡すアップグレードです。ステップ2 gccで停止します。 glibcにはCentOSのLinuxカーネルヘッダーが必要ですyum install kernel-headers-$(uname -r) -installs->/usr/src/linux-headers-$(uname -r)

+0

私はこれを試すのに多くの時間を費やしましたが、全く動作しません。その理由は、LFSは/ a/b/c/toolsのようなツールにこれらのツールをインストールし、symlink/tools - >/a/b/c/toolsを持っているからです。インストールは/ toolsを/ a/b/cにchrootすることを意図しているので/ toolsを介してのみ動作し、symlink/toolsなしでは動作しないことをテストしました。大きな問題はglibcです。prefix =/toolsを設定すると、ld-linux.so.2はsymlink/toolsなしでlibcを見つけることができません。 prefix =/a/b/c/toolsをインストールすると、g ++は/ a/b/c/tools/a/b/c/toolsでlibcを検索しようとします。 –

0

最新のツールチェーンは、OpenembeddedまたはYoctoからダウンロードできます。 ここでは、現在のシステムにパッケージをインストールする必要はありません。 ツールチェインをダウンロードして、環境をソースして、C++ 11のサポートを確認する準備ができました。 ツールチェインをダウンロードする場所: http://downloads.yoctoproject.org/releases/yocto/yocto-1.7/toolchain/(マシンのサポートに基づいて32ビットまたは64ビットのどちらかのアーキテクチャを選択してください)