Gccのffreestanding
とは何ですか?何に使うの?私は以下に遭遇しました:
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
そして、理解していない、それが正確に何を意味するのか。
freestanding
環境は、標準ライブラリが存在しない可能性があり、プログラムの起動が必ずしも「メイン」であるとは限りません。オプション-ffreestanding
は、標準関数が通常の定義を持っているとしないようにコンパイラーに指示します。
デフォルトでは、GCCはホストされた実装のコンパイラーとして機能し、__STDC_HOSTED__
を1として定義し、ISO C関数の名前が使用される場合、それらは標準で定義されているセマンティクスを持っていると想定します。自立型環境の適合自立型実装として機能させるには、-ffreestanding
オプションを使用します。次に、__STDC_HOSTED__
を0に定義し、標準ライブラリの関数名の意味については想定しません。
詳細については、 This リンクが役立つ場合があります。