makefile规则的语法格式

makefile规则的语法格式

ID:5262740

大小:302.26 KB

页数:26页

时间:2017-12-07

makefile规则的语法格式_第1页
makefile规则的语法格式_第2页
makefile规则的语法格式_第3页
makefile规则的语法格式_第4页
makefile规则的语法格式_第5页
资源描述:

《makefile规则的语法格式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MakefileEOSSTUTDeppyendencyggrapphsEOSSTUT2DeppyendencyggrapphsEOSSTUT3make程序¢Makefile規則的語法格式:目標文件列表:依賴文件列表命令列表¢一個Makefile文件主要含有一系列的規則,每條規則包含以下內容。¢“目標文件列表",即make最終需要創建的文件,如可執行文件和目標文件;目標也可以是要執行的動作,如“clean”。¢“依賴文件列表",通常是編譯目標文件所需要的其他文件。¢“命今列表",是make執行的動作

2、,通常是把指定的相關文件編譯成目標文件的編譯命令,每個命令占一行,且每個命令行的起始字符必須為TAB字符。¢除非特別指定,否則make的工作目錄就是當前目錄。“目標文件列表"是需要創建的二進制文件或目標文件,依賴文件列表是在創建“目標文件列表"時需要用到的一個或多個文件的列表,命令序列是創建“目標文件列表"文件所需要執行的步驟,比如編譯命令。EOSSTUTmake程序¢例如,有以下的Makefile文件:#一个简单的Makefile的例子test:prog.ocode.ogcc–otestprog.ocod

3、e.oprog.o:prog.cprog.hcode.hgcc–cprog.c–oprog.ocode.o:code.ccode.hgcc–ccode.cccode.c–ocode.oocode.oclean:rm–f*.oEOSSTUTmake程序¢上面的Makefile文件中共定義了四個目標:test、prog.o、code.o和clean。目標從每行的最左邊開始寫,後面跟一個冒號()(:),如果有與這個目標有依賴性的其他目標或文件,把它們列在冒號後面,並以空格隔開。然後另起一行開始寫實現這個目標的一組

4、命令。¢在Makefile中,可使用續行號()將一個單獨的命令行延續成幾行。但要注意在續行號()後面不能跟任何字符(包括空格和鍵)。¢一般情況下,調用make命令可輸入:$maketarget¢target是Makefile文件中定義的目標之一,如果省略target,make就將生成Makefile文件中定義的第一個目標。對於上面Makefile的例子,單獨的一個“make”命令等價於:$maketest¢因為test是Makefile文件中定義的第一個目標,make首先將其讀入,然後從第一行開始執行,

5、把第一個目標test作為它的最終目標,所有後面的目標的更新都會影響到test的更新。第一條規則說明只要文件test的時間戳比文件prog.o或code.o中的任何一個舊,下一行的編譯命令將會被執行。EOSSTUTmake程序¢在檢查文件prog.o和code.o的時間戳之前,make會在下面的行中尋找以prog.o和code.o為目標的規則,在第三行中找到了關於prog.o的規則,該文件的依賴文件是prog.c、prog.h和code.h。¢同樣,make會在後面的規則行中繼續查找這些依賴文件的規則,如果找

6、不到,則開始檢查這些依賴文件的時間戳,如果這些文件中任何一個的時間戳比prog.o的新,make將執行“gcc–cprog.c–oprog.o”命令,更新progoprog.o文件。¢以同樣的方法,接下來對文件code.o做類似的檢查,依賴文件是codeccode.c和codehcode.h。當make執行完所有這些套嵌的規則後,make將處理最頂層的test規則。如果關於prog.o和code.o的兩個規則中的任何一個被執行,至少其中一個.o目標文件就會比test新,那麼就要執行test規則中的命令,因此

7、make去執行gcc命令將prog.o和code.o連接成目標文件tttest。EOSSTUTmake程序¢在上面Makefile的例子中,還定義了一個目標clean,它是Makefile中常用的一種專用目標,即刪除所有的目標模塊。¢make做的工作:首先make按順序讀取makefile中的規則,然後檢查該規則中的依賴文件與目標文件的時間戳哪個更新,如果目標文件的時問戳比依賴文件還早,就按規則中定義的命令更新目標文件。如果該規則中的依賴文件又是其他規則中的目標文件,那麼依照規則鏈不斷執行這個過程,直到Ma

8、kefile文件的結束,至少可以找到一個不是規則生成的最終依賴文件,獲得此文件的時間戳,然後從下到上依照規則鏈執行目標文件的時間戳比此文件時間戳舊的規則,直到最頂層的規則。EOSSTUTMakefile範例##arch/arm/Makefile#LINKFLAGS:=-p-X-Tarch/arm/vmlinux.ldsOBJCOPYFLAGS:=-Obinary-R.note-R.comment-SGZFLAGS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。