2013-07-17 13 views
25

ffreestandingとは何ですか?それは何のために使われますか?私は以下を見つけました:gccのffreestandingオプションとは何ですか?

gcc -ffreestanding -m32 -c kernel.c -o kernel.o 

そして、正確にはどういう意味ですか?

+0

関連:http://stackoverflow.com/questions/2681304/compile-for-freestanding-environment-with-gcc –

答えて

38

freestanding環境は、標準ライブラリが存在しない可能性があり、プログラムの起動が必ずしも "main"であるとは限りません。 -ffreestandingオプションは、コンパイラに対してではないことを示します。では、標準関数に通常の定義があると仮定しています。

デフォルトでは、GCCはホスト実装のコンパイラとして動作し、__STDC_HOSTED__を1と定義し、ISO C関数の名前が使用されるときに標準で定義されているセマンティクスを持つと仮定します。自立環境のための準拠したフリースタンディング実装として動作させるには、オプション-ffreestandingを使用します。 __STDC_HOSTED__を0に定義し、標準ライブラリの関数名の意味については仮定しません。

詳細については、Thisリンクが参考になる場合があります。

+0

詳細をご記入ください – saplingPro

+0

@saplingPro編集した回答をご覧ください。 –

+0

@Dayalrai私は 'arm-non-eabi-gcc'で' -offreestanding'オプションを使用しました: 'arm-non-eabi-gcc -g -O0 -offreestanding ......' 'nm'コマンド' U main'を呼び出して、 'gdb':' Function "main" not defined'でデバッグエラーを生成します。この 'main'シンボルの生成を避けるにはどうすればいいですか? –

関連する問題