-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.
-c Compile or assemble the source files, but do not link. The linking stage simply is not >done. The ultimate output is in the form of an object
file for each source file.
By default, the object file name for a source file is made by replacing the suffix >.c, .i, .s, etc., with .o.
Unrecognized input files, not requiring compilation or assembly, are ignored.