How the gcc compiler ( C Language) on Linux platform knows which is Function call and which is the System call while compilation process ?
It doesn't.
During the compile, a function must be defined before it is called. If the function is not in the file being compiled, the function prototype must appear before the function is called.
Any function (yours or a system call) that has no code but only a function prototype will be marked by the compiler as an unresolved external reference in the object file.
The job of the linker when the object files are copied to the executable file is to locate those unresolved extrernal references. In the case of system call, the code for these functions is in libraries available to the linker. When a system function is required, the linker will copy the code for that function from the library to the executable and fix up the addresses so it looks like the system code was part of your program all along.