web-dev-qa-db-ja.com

gccの-ffreestandingオプションとは何ですか?

Gccのffreestandingとは何ですか?何に使うの?私は以下に遭遇しました:

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

そして、理解していない、それが正確に何を意味するのか。

32
saplingPro

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

デフォルトでは、GCCはホストされた実装のコンパイラーとして機能し、__STDC_HOSTED__を1として定義し、ISO C関数の名前が使用される場合、それらは標準で定義されているセマンティクスを持っていると想定します。自立型環境の適合自立型実装として機能させるには、-ffreestandingオプションを使用します。次に、__STDC_HOSTED__を0に定義し、標準ライブラリの関数名の意味については想定しません。

詳細については、 This リンクが役立つ場合があります。

47
Dayal rai