2011年1月23日 星期日

[Linux] makefile

.用於自動編譯和連接。 

.一個工程有很多文件组成,每一個文件的改变都會導致工程的重新連接,但是不是所有的文件都需要重新編譯?makefile能夠記錄文件的信息,决定在連接的時候需要重新編譯哪些文件。

.Make是什麼?
-- GNU Make是一個開發源代碼的Make工具。
-- 在命令行下寫程序的人應該都知道,它是一個項目管理工具。它的最基本用途就是管理項目的編譯、 連接。它會按照規則(定義在規則文件中)、依賴順序對項目中的文件進行編譯、連接或把它們安裝到系統中。
-- GNU Make的可執行程序通常就是make.exe。 

.怎麼寫makefile?
1、你依次定義的MYDIR 、ORA_INCLUDE 、ORA_LIBPATH 、ORA_LIB 並沒有使用到,如果不使用,不知道你定義這些做什麼,為了讓makefile變長嗎?
2、cFile.o: 
cc -c cFile.c -o cFile.o 中該行需要一個tab。
test.c: 
proc include=/usr/include include=$ORACLE_HOME/precomp/public include=$ORACLE 
_HOME/rdbms/demo iname=test.pc oname=test.c 中該行需要一個tab。
3、就你的makefile,孤立的看,cFile.c 與test.c 沒有任何聯繫。
4、習慣上,all:屬於你的目標模塊的名稱,你可以加入*.o,但是這樣不是好習慣。
5、INCLUDE_DIR = . INCLUDE = -I. -I$(INCLUDE_DIR) 存在重複定義行為。

.Reference: Wiki 和 1

沒有留言:

張貼留言