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

來源:互聯網
上載者:User

[編譯] 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是清除所有組建檔案~

 

效果如下:

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.