How to write a Makefile to compile a simple C program

c, makefile, unix

Solution

This is your simple make file for hello program.

CC      = gcc
CFLAGS  = -g
RM      = rm -f


default: all

all: Hello

Hello: Hello.c
    $(CC) $(CFLAGS) -o Hello Hello.c

clean veryclean:
    $(RM) Hello

Suppose you have two `makefiles` in one directory named `makefile.m1` and `makefile.m2` and if you want build both make file then please use following commands

make -f makefile.m1
make -f makefile.m2

or use single `Makefile` that contains:

m1:
  make -f makefile.m1

m2:
  make -f makefile.m2

and use `make m1` or `make m2`

Now lets clear your doubt about name of make file must not require `Makefile`

You can name makefile whatever you want. suppose i would like to give name `myfirstmakefile.mk`. To use it later you need to tell make what makefile you want. Use -f option for this:

make -f myfirstmakefile.mk

And again extantion `.mk` is also not manadatory you can use whatever you want but never forgot to use `-f` option.

so may this help make sense to you.

Problem

Compile the following program ``` #include <stdio.h> int main(void) { printf ("Hello from your first program!\n"); return 0; } ``` a)-by using file of type Makefile b)-the executable will be named Hello "Please help to do an exercise. I know how to do it in CodeBlocks, but I don't know what Makefile is and how to write it in Linux. I compiled it using command "gcc filename.c" and subsequently "./a.out" but I still don't understand what the Makefile is. Is it a sort of shell script, an instruction? How would a Makefile for this task exactly look? Thanks in advance :) "

Original source