1. 程式人生 > >Linux平臺Makefile檔案的編寫基礎入門(課堂作業)

Linux平臺Makefile檔案的編寫基礎入門(課堂作業)

原作者:超超boy

連結:http://www.cnblogs.com/jycboy/p/5084402.html

根據老師的要求,寫一個超簡單的makefile
準備:
準備三個檔案:file1.c, file2.c, file2.h
       file1.c:

1234567#include "file2.h"int main(){printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n");File2Print();return 0;}

       file2.h:

複製程式碼
#include <stdio.h> 
#ifndef FILE2_H_
              
#define FILE2_H_ #ifdef __cplusplus extern "C" { #endif void File2Print(); #ifdef __cplusplus } #endif #endif
複製程式碼

       file2.c:

12345#include "file2.h"void File2Print(){printf("Print file2**********************\n");}

基礎:
       先來個例子:
       有這麼個Makefile檔案。(檔案和Makefile在同一目錄)
       === makefile 開始 ===

helloworld:file1.o file2.o
    gcc file1.o file2.o -o helloworld
file1.o:file1.c file2.h
    gcc -c -o file1.o file1.c 
file2.o:file2.c file2.h
    gcc 
-c -o file2.o file2.c

一個 makefile 主要含有一系列的規則,如下:
目標檔案:依賴檔案
(tab)<command>
(tab)<command>

每個命令列前都必須有tab符號。

上面的makefile檔案目的就是要編譯一個helloworld的可執行檔案。讓我們一句一句來解釋:

       helloworld : file1.o file2.o:                 helloworld依賴file1.o file2.o兩個目標檔案。

       gcc file1.o file2.o -o helloworld:      編譯出helloworld可執行檔案。-o表示你指定 的目標檔名。

       file1.o : file1.c file2.h:    file1.o依賴file1.c檔案。

       gcc -c file1.c -o file1.o:編譯出file1.o檔案。-c表示gcc 只把給它的檔案編譯成目標檔案, 用原始碼檔案的檔名命名但把其後綴由“.c”或“.cc”變成“.o”。在這句中,可以省略-o file1.o,編譯器預設生成file1.o檔案,這就是-c的作用。

              file2.o : file2.c file2.h
              gcc -c file2.c -o file2.o

這兩句和上兩句相同。

如果要編譯cpp檔案,只要把gcc改成g++就行了。

寫好Makefile檔案,在命令列中直接鍵入make命令,就會執行Makefile中的內容了。

結果如圖: