什么是gcc中的-ffreestanding选项?

sap*_*Pro 30 c gcc compilation

什么是ffreestandinggcc?它是干什么用的 ?我遇到了以下情况:

gcc -ffreestanding -m32 -c kernel.c -o kernel.o
Run Code Online (Sandbox Code Playgroud)

并且不明白,它究竟意味着什么.

Day*_*rai 47

freestanding环境是其中标准库可能不存在,并且程序启动时可以不必是在"主".该选项-ffreestanding指示编译器不要假设标准函数具有其通常的定义.

默认情况下,GCC将充当托管实现的编译器,定义__STDC_HOSTED__为1并假设在使用ISO C函数的名称时,它们具有标准中定义的语义.要使其成为独立环境的符合标准的独立实现,请使用该选项-ffreestanding.然后它将定义__STDC_HOSTED__为0,而不是对标准库中函数名称的含义进行假设.

有关更多信息,链接可能会有所帮助.