- gcc 中的 -ffreestanding -ffreestanding -fno-rtti -fno-exceptions 选项是什么?
freestanding选项:
一个 freestanding环境是一种标准库可能不存在的环境,程序启动可能不一定在“main”。选项 -ffreestanding指示编译器不要假设标准函数有它们通常的定义。
默认情况下,GCC 将充当托管实现的编译器,定义 __STDC_HOSTED__作为 1 并假设当使用 ISO C 函数的名称时,它们具有标准中定义的语义。要使其成为独立环境的符合标准的独立实现,请使用选项 -ffreestanding .然后它将定义 __STDC_HOSTED__到 0,而不是对标准库中函数名称的含义进行假设。
fno-rtti选项:
禁用运行时类型信息
fno-exceptions选项:
禁用异常机制
总结:一般只有对程序运行效率及资源占用比较看重的场合才会使用, 如果要做这两个的话最好连libstdc++和其他所有的的c++库都用这两个参数重新编译一遍, 否则光是你自己的程序禁用了这两个特性, 而别的库依然开着, 效果就大打折扣了。