1、在eg目录下分别新建main.c、add.c、sub.c、mul.c、hello.c、“Makefile”文件
//main.c
#include <stdio.h>
int main()
{
int a;
int b;
printf ("a + b = %d\n", add(1, 2));
printf ("a - b = %d\n", sub(3, 4));
printf ("a * b = %d\n", mul(5, 6));
return 0;
}
//add.c
int add(int a, int b)
{
return a+b;
}
//sub.c
int sub(int a, int b)
{
return a-b;
}
//mul.c
int mul(int a, int b)
{
return a*b;
}
//hello.c
#include <stdio.h>
int main()
{
printf ("Hello World!\n");
return 0;
}
#Makefile文件
all:a.out hello
#all/ALL最终要生成的目标,不要写命令
#最终生成两个文件:a.out、hello
a.out : main.o add.o mul.o sub.o
gcc main.o add.o mul.o sub.o -o a.out
main.o:main.c
gcc -c main.c -o main.o
add.o:add.c
gcc -c add.c -o add.o
mul.o:mul.c
gcc -c mul.c -o mul.o
sub.o:sub.c
gcc -c sub.c -o sub.o
hello:hello.c
gcc hello.c -o hello
.PHONY:clean all
clean:
-rm -rf a.out hello *.o
2、测试结果
root@lj:/eg# make
gcc -c main.c -o main.o
gcc -c add.c -o add.o
gcc -c mul.c -o mul.o
gcc -c sub.c -o sub.o
gcc main.o add.o mul.o sub.o -o a.out
gcc hello.c -o hello
root@lj:/eg# ./a.out
a + b = 3
a - b = -1
a * b = 30
root@lj:/eg# ./hello
Hello World!
all/ALL:最终要生成的目标,不要写命令
执行规则:
a、如果目标文件的时间早于依赖文件,则重新生成目标文件
b、如果依赖文件不存在,则会去找相应的规则生成依赖文件