[編譯] 1、第一個makefile簡單例子


 

前言

本篇用一個最簡單的例子引入makefile,教你編寫第一個makefile

 

正文

在Download/aa文件夾下有a.c和makefile文件

1 litao@litao:~/Downloads/aa$ ls
2 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         ./a
13 clear:
14         rm -rf a.o a.s a.i a

 

makefile文件的基本單元是規則。一條規則指定一個或多個目標文件,目標文件后面跟的是編譯生成該目標文件所依賴的文件或模塊,最后是生成或更新目標文件所用的命令。格式如下:

其中[]中的內容是可選的。

上面第1、2行構成一個規則~

特別注意生成目標文件所用命令必須以Tab鍵開頭(如果某一行以tab鍵開頭,make就認為是命令)

在依賴文件列表后面加一個;號可以跟命令,如下:

 

11、12行是什么鬼?

是偽目標!

在makefile文件中,目標文件可以分為兩類:實目標和偽目標。實目標文件是真正要生成的、以文件的形式存放在硬盤上的目標。偽目標不要求生成實際文件,而是為了讓make執行一些輔助命令,如打印一些信息、刪除無用中間文件等,這里的run是運行生成a程序,clear是清除所有生成文件~

 

效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM