質問

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

参考までに、X86_64コンパイラの-M32オプションをよく知っています。 32ビットのみのコンパイラ環境が欲しいです。また、既にビルドI386コンパイラを使用したくない理由は、テストのニーズに応じて、GlibC/Binutils/GCCバージョンの混合とマッチングを計画しているためです。

ありがとう、チェンツ

役に立ちましたか?

解決

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

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

あなたがanでビルドを実行しているとき x86_64, 、コンパイラがanで実行するため x86_64, 、anのコードを生成します i386.

使用した場合 CHOST = 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つの可能性があります(from ここ)

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top