2012-04-12 23 views
4

OS Xでx86_64-elfカーネルを構築しています。私のビルドシステムはautotoolsです。autotools:Cコンパイラが実行可能ファイルを作成できない

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

だから私はconfig.logのを見て、次を参照してください:

私は正常私はautotoolsのから生成されたconfigureスクリプトを実行すると、OS X上x86_64のエルフのクロスコンパイルするgccの私は問題を持っているのコンパイル
cannot find crt0.o: No such file or directory 
collect2: error: ld returned 1 exit status 

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

+0

'configure.ac'スクリプトで' CC'変数を設定することはできませんか?しかし、他のテストではスクリプトが実行しようとする実行可能ファイルを作成する可能性があるため、動作しない可能性があります。 –

+0

私はconfigureを実行するときにCC変数を設定します。本当に悪い形式でconfigure.acに設定します。それにもかかわらず、コンパイラが実行可能ファイルを作成できるかどうかを調べる方法を私がどのようにして得るかという質問には答えません。 – dschatz

+0

クロスコンパイルするようにconfigureに指示します。 './configure --host = x86_64-unknown-linux'を使用してください。ビルドタイプがホストタイプと異なる場合は、特定のテストをスキップすることができます。 –

答えて

0

試してみてください。今

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

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

+0

何も変更しません。 x86_64-unknown-linuxをビルドするのではなく、x86_64-elf用にビルドします。 – dschatz

+0

クロスコンパイラを指すように環境変数(CC、LDなど)を設定していますか? – ldav1s

2

あなたはconfigureスクリプト(CFLAGS環境変数に追加)を実行するときに、次のgccのフラグを指定していることを確認してください:あなたが最後にこれらを追加する方法がわからない場合は

-nostdlib -nostartfiles -nodefaultlibs -ffreestanding 

export CFLAGS=$CFLAGS -nostdlib -nostartfiles -nodefaultlibs -ffreestanding 
関連する問題