ffreestanding
とは何ですか?それは何のために使われますか?私は以下を見つけました:gccのffreestandingオプションとは何ですか?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
そして、正確にはどういう意味ですか?
ffreestanding
とは何ですか?それは何のために使われますか?私は以下を見つけました:gccのffreestandingオプションとは何ですか?
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
そして、正確にはどういう意味ですか?
freestanding
環境は、標準ライブラリが存在しない可能性があり、プログラムの起動が必ずしも "main"であるとは限りません。 -ffreestanding
オプションは、コンパイラに対してではないことを示します。では、標準関数に通常の定義があると仮定しています。
デフォルトでは、GCCはホスト実装のコンパイラとして動作し、__STDC_HOSTED__
を1と定義し、ISO C関数の名前が使用されるときに標準で定義されているセマンティクスを持つと仮定します。自立環境のための準拠したフリースタンディング実装として動作させるには、オプション-ffreestanding
を使用します。 __STDC_HOSTED__
を0に定義し、標準ライブラリの関数名の意味については仮定しません。
詳細については、Thisリンクが参考になる場合があります。
詳細をご記入ください – saplingPro
@saplingPro編集した回答をご覧ください。 –
@Dayalrai私は 'arm-non-eabi-gcc'で' -offreestanding'オプションを使用しました: 'arm-non-eabi-gcc -g -O0 -offreestanding ......' 'nm'コマンド' U main'を呼び出して、 'gdb':' Function "main" not defined'でデバッグエラーを生成します。この 'main'シンボルの生成を避けるにはどうすればいいですか? –
関連:http://stackoverflow.com/questions/2681304/compile-for-freestanding-environment-with-gcc –