0

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

参考までに、x86_64 コンパイラの -m32 オプションについてはよく知っています。32ビットのみのコンパイラ環境があればいいのにと思います。また、膨大な数の既にビルドされている i386 コンパイラを使用したくない理由は、テストのニーズに応じて glibc/binutils/gcc のバージョンを混在させて一致させることを計画しているためです。

ありがとう、チェンツ

4

2 に答える 2

1

ここに1つの可能性があります(ここから)

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

于 2009-02-27T14:51:34.007 に答える
0

クロスコンパイルの構成を正しく使用していますか? そのはず

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

でビルドを実行しているx86_64ため、コンパイラが で実行され、 のx86_64コードが生成されますi386

を使用CHOST = i386-pc-linux-gnuした場合は、32 ビット バイナリとリンクする必要がある 32 ビット バイナリを生成しようとしますlibc。すでに 32 ビットをお持ちの場合は問題libcありませんが、そうではないようです。

すなわち

$ tar xvjf gcc-*.tar.bz2
$ cd gcc-*/
$ mkdir ビルド
$ cd ビルド
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu
于 2009-02-27T22:59:15.847 に答える