[編譯] 1、第一個makefile簡單例子,
前言
本篇用一個最簡單的例子引入makefile,教你編寫第一個makefile
本文
在Download/aa檔案夾下有a.c和makefile檔案
1 litao@litao:~/Downloads/aa$ ls2 a.c makefile
其中a.c為:
1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 for(i=0;i<10;i++) 6 { 7 for(j=2*i+1;j>0;j--) 8 { 9 printf("#");10 }11 printf("\n");12 }13 }
其中makefile為:
其格式為:
1 a:a.o #linK 2 gcc a.o -o a 3 a.o:a.s #彙編Assembling 4 gcc -c a.c -o a.o 5 a.s:a.i #編譯 6 gcc -S a.i -o a.s 7 a.i:a.c #pre-processing 8 gcc -E a.c -o a.i 9 10 11 run:12 ./a13 clear:14 rm -rf a.o a.s a.i a
makefile檔案的基本單元是規則。一條規則指定一個或多個目標檔案,目標檔案後面跟的是編譯產生該目標檔案所依賴的檔案或模組,最後是產生或更新目標檔案所用的命令。格式如下:
其中[]中的內容是可選的。
上面第1、2行構成一個規則~
特別注意產生目標檔案所用命令必須以Tab鍵開頭(如果某一行以tab鍵開頭,make就認為是命令)
在依賴檔案清單後面加一個;號可以跟命令,如下:
11、12行是什麼鬼?
是偽目標!
在makefile檔案中,目標檔案可以分為兩類:實目標和偽目標。實目標檔案是真正要產生的、以檔案的形式存放在硬碟上的目標。偽目標不要求產生實際檔案,而是為了讓make執行一些輔助命令,如列印一些資訊、刪除無用中間檔案等,這裡的run是運行產生a程式,clear是清除所有組建檔案~
效果如下: