hi ras, thanks for that. so, I don't know who else got stuck in `linking & loading` phase of C compilation process. the `-lm` flag of `gcc` I guess does that. so, preprocessing literally copy and paste the high-level C code from header files to this (main.c), macros are replaced with compTime constant values. okay. now, compiling to assembly, then this assembly code is compiled to final machine/object code. after that we do linking and loading. I tried to study it many times but I don't understand this.