Cоnsidering the cоmpilаtiоn phаse of our аpplications, our initial approach was to properly define a makefile (as you know, Linux programmers tend to love them). What is a makefile? What are the advantages vs disadvantages of defining a makefile? Explain.