4

OS X で x86_64-elf カーネルをビルドしています。ビルド システムは autotools です。OS X で x86_64-elf 用に gcc を正常にコンパイルしてクロスコンパイルしました。autotools から生成された構成スクリプトを実行すると、次のような問題が発生します。

configure: error: C compiler cannot create executables
See `config.log' for more details

だから私は config.log を見て、次のことを確認します。

cannot find crt0.o: No such file or directory
collect2: error: ld returned 1 exit status

これは完全に理にかなっています。関連するランタイムがないため、クロスコンパイラは実行可能ファイルを生成しません。しかし、コンパイラが実行可能ファイルを生成する必要はありませんし、望んでもいないので、ブートローダー用に適切にリンクします。これをチェックしないように autotools に指示するにはどうすればよいですか?

4

2 に答える 2

3

configure スクリプトを実行するときは、次の gcc フラグを指定していることを確認してください (それらを CFLAGS 環境変数に追加します)。

-nostdlib -nostartfiles -nodefaultlibs -ffreestanding

これらを CFLAGS の最後に追加する方法がわからない場合は、次のようにしてみてください。

export CFLAGS=$CFLAGS -nostdlib -nostartfiles -nodefaultlibs -ffreestanding
于 2013-08-05T00:17:17.083 に答える
0

試す:

DARWIN_VERSION_FULL=darwin`uname -r`
./configure --build=x86_64-apple-${DARWIN_VERSION_FULL} --host=x86_64-unknown-linux

configureこれでクロスコンパイルモードになり、そのテストの実行を停止する必要があります。

于 2012-04-12T19:27:48.160 に答える