Linux操作——一般Makefile檔案的編寫
阿新 • • 發佈:2018-12-08
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、測試結果
[email protected]:/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 [email protected]:/eg# ./a.out a + b = 3 a - b = -1 a * b = 30 [email protected]:/eg# ./hello Hello World!
all/ALL:最終要生成的目標,不要寫命令
執行規則:
a、如果目標檔案的時間早於依賴檔案,則重新生成目標檔案
b、如果依賴檔案不存在,則會去找相應的規則生成依賴檔案