我們已經知道在linux環境下編譯源碼時,常會有以下三個步驟:
./configure
make
make clean
執行./configure時,會檢查系統的配置等,得到相關的有用的信息,生成Makefile文件。
執行make命令時,make命令解釋Makefile文件中的規則,生成目標文件。
執行make clean會刪除生成目標文件過程中的生成的中間文件。
Makefile文件是可以由我們手工建立的:接下來是編寫在同一個文件夾下的程序的Makefile文件。
文件有compute.c與m.h,代碼如下:
1 //compute.c 2 #include<stdio.h> 3 #include"m.h" 4 int main(){ 5 int a=2,b=3; 6 printf("a+b=%d\n",add(a,b)); 7 printf("a*b=%d\n",multi(a,b)); 8 return 0; 9 }
1 //m.h 2 int add(int a,int b){ 3 int c; 4 c = a+ b; 5 return c; 6 } 7 8 int multi(int a, int b){ 9 int c=a*b; 10 return c; 11 }
編寫的Makefile文件如下:
1 #makefile 2 objects=compute.o 3 CC=@gcc #如果沒有@符號,gcc的命令就會輸出到終端 4 CPP=@gcc -c #如果有@符號,gcc的命令就不會輸出到終端 5 6 compute:$(objects) 7 $(CC) -o compute $(objects) 8 9 #標準寫法 10 compute.o:compute.c m.h 11 $(CPP) compute.c 12 13 14 #簡寫形式; 15 #make自動推導 因爲要生成.o文件,就需要相關聯的compute.c文件, 16 #make會自動生成gcc -c compute.c的命令 17 #compute.o:m.h 18 19 clean: 20 @rm compute $(objects)
接下來,執行make命令,就會生成compute.o文件與可執行文件compute.
$ ls -l 總用量 12 -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h $ make $ ls -l 總用量 28 -rwxr-xr-x 1 qi qi 8480 5月 17 19:23 compute -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 1944 5月 17 19:23 compute.o -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h
執行make clean會按照Makefile文件中的僞目標clean,對文件進行刪除操作。
$ make clean $ ls -l 總用量 12 -rw-r--r-- 1 qi qi 133 5月 16 17:18 compute.c -rw-r--r-- 1 qi qi 224 5月 17 14:38 Makefile -rw-r--r-- 1 qi qi 105 5月 16 17:14 m.h