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中的內容了。
結果如圖: