2009-02-27 10 views
0

x86_64をホスト、i386をターゲットとするクロスコンパイラを構築しようとしています。私は(一般的に)すべてを取得しています。crti.o:そのようなファイルエラーはありません。ディストリビューションから既にビルドされているcrti.oとcrtn.oを取得する代わりに、どうすればこれらのファイルをglibc(またはgcc)ソースから明示的にビルドすることができますか?ビルドcrti.o for i386

参考までに、私はx86_64コンパイラの-m32オプションをよく知っています。私はちょうど32ビットのみのコンパイラ環境を持っているのが好きです。また、i386コンパイラをビルドしてgazillionを使用したくない理由は、テストの必要性に応じてglibc/binutils/gccのバージョンをミックスして一致させる予定があるからです。

おかげで、 Chenz

+0

可能重複[crti.oファイルが欠落している]私は32ビットのみではなく、欲しい(http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

答えて

0

クロスコンパイルを正しく設定してもよろしいですか?あなたがi386ためのコードを生成する、x86_64上で実行するために、コンパイラのために、x86_64上でビルドを実行しているように、それは

CBUILD = CHOST = x86_64-pc-linux-gnu 
CTARGET = i386-pc-linux-gnu

でなければなりません。 を使用した場合は、32ビットのバイナリを生成しようとしているため、32ビットのlibcにリンクする必要があります。あなたが既に32ビットのlibcを持っていればうれしいですが、そうではないように聞こえます。

すなわち

$ tar xvjf gcc-*.tar.bz2 
$ cd gcc-*/ 
$ mkdir build 
$ cd build 
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu
1

ここで(hereから)一つの可能​​性だ

あなたのディストリビューションの32 ビットのlibc-devのパッケージをインストールする必要があり、またはあなたが --disable-multilibのに必要があります32 ビットモードをサポートしていないコンパイラが発生します。

+0

他の方法で。私はディストロコピーを使用したくない...私はソースからビルドしたい。 FYIをお読みください。 –

関連する問題