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。