What is ffreestanding
in gcc ? What is it used for ? I came across the following :
gcc -ffreestanding -m32 -c kernel.c -o kernel.o
and do not understand, what does it mean exactly.
When you invoke GCC, it normally does preprocessing, compilation, assembly and linking. The "overall options" allow you to stop this process at an intermediate stage. For example, the -c option says not to run the linker.
clause. Compilers options (− x on Linux, and /Qx on Microsoft Windows) control which instructions the compiler uses within a function, while the processor(…) clause controls creation of non-standard functions using wider registers (YMM or ZMM) for passing SIMD data for parameters and results. The processor(…)
-c will instruct gcc to only compile the source file to an .o (object) file but does not invoke the linker. With a project containing many . c files one will typically compile first all . c files to .o files and then link everything together with the libraries.
The g++ Compiler Without this option, g++ creates an executable file. With this option, it creates an object file. If no output file name is given (by option -o), the object file name for file prog.
A freestanding
environment is one in which the standard library may not exist, and program startup may not necessarily be at "main". The option -ffreestanding
directs the compiler to not assume that standard functions have their usual definition.
By default, GCC will act as the compiler for a hosted implementation, defining __STDC_HOSTED__
as 1 and presuming that when the names of ISO C functions are used, they have the semantics defined in the standard. To make it act as a conforming freestanding implementation for a freestanding environment, use the option -ffreestanding
. It will then define __STDC_HOSTED__
to 0, and not make assumptions about the meanings of function names from the standard library.
For more Info, This link may help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With