GCC is standard for "GNU Compiler Collection" which is a provide compilers for various programming languages including most popular C and C++ languages developed by the GNU Project. GCC toolchain is included in all Unix/Linux system by default and for windows, MinGW or Cygwin can be installed. "Make" is not a compiler and the simple way to manage source code compilation. What "make" does it introduce a separate file (Makefile) of "rules", that describes how to go from source code to finished program. This is kick-start that provides the basic knowledge, and you can quick and easily create your own makefile for small to large-scale projects. I'm not going to cover all the things that are possible using make. But you'll be able to get a basic understanding of GCC and Make.


1.1 First, Do you know, what is "Preprocessing", Compilation" And "linking"?


Preprocessing: Compiler takes the source codes file and analyzes the "#include"s, "#define"s and other preprocessor directives. Then it's produced pure source file without preprocessor directives.


Compilation: The compiler takes above output file and converts it into assembly code related to the target architecture call as an object file. Besides, This this object file contains the compiled code of the symbols defined in the input file (in binary format). Symbols in object files are referred to by name. The compiler usually let you allowed to stop compilation at this point. This is very useful because each source file can compile separately and the advantage is that you don't need to recompile every file if you only change a single file.


Linking: The linker takes the above-created object files, and it links all the object files by replacing the reference to undefined symbols with the correct addresses. Then it creates the final output file. This output file can be either a shared/static library file or executable binary file. The most common error messages that outbreak in this stage are "undefined reference to…" and "multiple references to.."


1.2 Do you know what is "gcc" and "g++"?

Simply, The GNU C and C++ compiler are gcc and g++, respectively. If you really interesting in getting to know about GNU GCC go and see it's official website in this link ( https://gcc.gnu.org/)


Now you know what is preprocessing, compilation and linking. Next Let's see how do compile a simple program.

Here I'm going to compile a C and C++ program separately using "gcc" and "g++" compilers. First, We will see a C program.