我的第一個makefile
最近學到了makefile的文件的編寫。makefile是一個能達到方便編譯鏈接生成目標程序的文件,
make確實很方便,在寫makefile的過程也能更好的理解gcc編譯器執行生成可執行文件的全過程。這里是我
的第一個makefile的編寫。
makefile根據依賴,逐步解析生成目標文件。
首先指定all:ef 生成最終目標文件ef
生成ef的前提是依賴ef:total.o sum.o mul.o 三個目標文件。
並且我們要指定gcc的執行 gcc -o ef total.o sum.o mul.o
由於生成ef需要三個*.o文件,所以我們要生成三個*.o文件。
生成total.o 需要文件total.c
生成sum.o 需要文件sum.c
生成mul.o 需要文件mul.c
所以我們指定生成依賴關系,然后指定gcc執行過程。
當執行make時,make會根據他們之間的依賴關系生成目標文件。
在第一編寫makefile的過程中我遇到下面的兩個問題,其實這也是新手常范的錯誤
1:在“:”后面不能用空格。
2:gcc 前面用空格代替了Tab,導致makefile執行失敗。
下面是sum.c mul.c total.c 的代碼內容
//sum.c
int sum_one(void) { int sum = 0,i = 1; while(i<=10) { sum += i; ++i; } return sum; }
//mul.c int mul_two(void) { return (2*5*8*10*14); }
//total.c #include"stdio.h" int main(void) { char ch ; scanf("%c",&ch); while(ch!='1'&&ch!='2'&&ch!='q'&&ch!='Q') { printf("input error,please enter again!"); scanf("%c",&ch); } switch(ch) { case '1': printf("The sum of from 1 to 10 is %d \n",sum_one()); break; case '2': printf("The mul of 2 , 5, 8 ,10 ,14 is %d \n",mul_two()); break; default: return 0; } return 0; }
make執行過程
哈哈,第一個makefile