歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Makefile基本使用總結

Makefile基本使用總結

日期:2017/3/1 9:37:38   编辑:Linux編程

Makefile常識

1、Makefile是一個文件

2、功能: 用作整個工程的編譯

Makefile基本用法

1、首先建立一個Makefile文件,寫入內容告訴make命令如何編譯和鏈接我們的文件

2、使用規則:

目標:依賴文件1 依賴文件2 //可以有多個依賴文件,"依賴文件"就是要編譯的文件,"目標"就是要生成的文件

按TAB鍵 命令 //寫上自己要執行的命令

*解釋*:"依賴文件" 就是要編譯的文件,"目標" 就是要生成的文件,生成該目標文件需要後面的依賴文件才可以

eg: main : main.c file1.o file2.o

gcc main.c file1.o file2.o -o main

file1.o: file1.c

gcc -c -o file1.o file1.c

file2.o:file2.c

gcc -c -o file2.o file2.c

*分析* :1) 上面一共有三個目標:main file1.o file2.o

2) 第2,3個目標借助 -c 只編譯不鏈接生成的是二進制文件*.o

3) 用第1個目標把第2,3目標及主依賴文件main.c一塊生成一個可執行的文件main

*總結*:1) 命令一定要按TAB鍵;

2) make默認執行第一個目標,因此第2,3目標用 -c 生成*.o的二進制文件而不生成可執行文件;

3) 執行make有作用,前提是該目錄下沒有對應的可執行文件或要編譯的文件已經更改;

4) 不要一個目標依賴多個.c文件;

5) 當一行寫不下時,可以用\來換到下一行寫;

3、Makefile文件下面還可以添加 偽目標

偽目標:不是一個真正的文件名,但可以給該偽目標指定要執行的命令,之後 make + 偽目標 就能執行該命令

eg: clean :

rm *.o main

若執行 make clean 就可以把所有的*.o目標文件及可執行文件main一塊刪除

4、靈活使用變量簡化操作

makefile常用變量: $^ 代表所有的依賴文件

$< 代表第一個依賴文件

$@ 代表目標

%.格式 代表所有該格式的文件(在vi替換命中令也使用了%代表所有)

eg:file:file1.o file2.o

gcc file1.o file2.o -o file

file1.o: file1.c

gcc -c -o file1.o file1.c

file2.o: file2.c

gcc -c -o file2.o file2.c

clean:

rm *.o file

用變量簡化寫法:

file: file1.o file2.o

gcc $^ -o $@

%.o: %.c

gcc -c $< -o $@

clean:

rm *.o file //命令可根據需求定義

*分析*:以後不管有多少個.c文件,都可以用上面的後兩行表示,先生成二進制.o文件,之後可以選擇哪個.o文件合成為一個執行文件。

5、在第二行命令前加上@,在make執行時會顯示執行的命令

6、-o + 輸出的文件名,對於它的位置放法,可以這樣:當有編譯選項時,放前面;沒有,就放後邊;

Linux程序設計(原書第2版)(PDF中文版 + 源碼) http://www.linuxidc.com/Linux/2011-04/34147.htm

u-boot Makefile完全解讀 http://www.linuxidc.com/Linux/2013-04/83529.htm

實驗平台上Makefile詳細的解釋 http://www.linuxidc.com/Linux/2014-01/94827.htm

Makefile之Linux內核模塊的Makefile寫法分析 http://www.linuxidc.com/Linux/2013-06/85842.htm

Makefile之寫demo時的通用Makefile寫法 http://www.linuxidc.com/Linux/2013-05/84679.htm

Makefile之大型工程項目子目錄Makefile的一種通用寫法 http://www.linuxidc.com/Linux/2013-05/84678.htm

Copyright © Linux教程網 All Rights Reserved