Makefile


makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因爲 makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。
Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關係並自動維護編譯工作。而makefile 文件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件並連接生成可執行文件,並要求定義源文件之間的依賴關係。makefile 文件是許多編譯器--包括 Windows NT 下的編譯器--維護編譯信息的常用方法,只是在集成開發環境中,用戶通過友好的界面修改 makefile 文件而已。
在 UNIX 系統中,習慣使用 Makefile 作爲 makefile 文件。如果要使用其他文件作爲 makefile,則可利用類似下面的 make 命令選項指定 makefile 文件。
一個文件,指示程序如何編譯和鏈接程序。makefile文件的默認名稱是名副其實的Makefile,但可以指定一個命令行選項的名稱。
 
make程序有助於您在開發大型程序跟蹤整個程序,其中部分已經改變,只有那些編譯自上次編譯的程序,它已經改變了部分。

關於編譯階段
 
編譯一個小的C程序至少需要一個單一的文件.h文件(如適用)。雖然命令執行此任務只需CC file.c中,有3個步驟,以取得最終的可執行程序,如下所示:
 
編譯階段:所有的C語言代碼.c文件中被轉換成一個低級語言彙編語言;決策.s文件。
 
彙編階段:前階段所作的彙編語言代碼,然後轉換成目標代碼的代碼片段,該計算機直接理解。目標代碼文件.o 結束。
 
鏈接階段:編譯程序涉及到鏈接的對象代碼的代碼庫,其中包含一定的「內置」的功能,如printf的最後階段。這個階段產生一個可執行程序,默認情況下,這是名爲a.out。