版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌套 Makefile 實(shí)驗(yàn)【實(shí)驗(yàn)?zāi)康摹?、讀懂 makefile 文件,能根據(jù) makefile 文件2、能編寫簡(jiǎn)單 makefile 3、掌握嵌套執(zhí)行 makefile程序結(jié)構(gòu)【實(shí)驗(yàn)環(huán)境】Ubuntu 8.10版、gcc 等工具【實(shí)驗(yàn)步驟】要?jiǎng)?chuàng)建的目錄結(jié)構(gòu)如下:一、創(chuàng)建頂層目錄首先在用戶目錄下創(chuàng)建一個(gè) makefileTest 的文件夾:#cd /home/linux/ #mkdir makefileTest #cd makefileTest創(chuàng)建好需要用到的文件夾#mkdir f1 f2 main obj include進(jìn)入 include 文件夾創(chuàng)建一個(gè)共用頭文件#cd include
2、#vim myinclude.h輸入如下內(nèi)容:#include 保存退出頂層 Makefile返回頂層目錄:#cd .二、創(chuàng)建頂層 Makefile 文件#vim Makefile輸入以下內(nèi)容:三、進(jìn)入在 f1 目錄下創(chuàng)建 makefile #cd f1#vim f1.c輸入如下測(cè)試代碼:保存退出。#vim Makefile輸入如下內(nèi)容:./$(OBJS_DIR)/f1.o: f1.c$(CC) -c $ -o $#include “./include/myinclude.h”void pr1()prf(Message from f1.c.n); return;CC = gcc SUBDIRS
3、 = f1 f2 main objOBJS = f1.o f2.o main.o BIN = myappOBJS_DIR = obj BIN_DIR = binexport CC OBJS BIN OBJS_DIR BIN_DIRall : CHECK_DIR $(SUBDIRS) CHECK_DIR :mkdir -p $(BIN_DIR)$(SUBDIRS) : ECHOmake -C $ ECHO:echo $(SUBDIRS) echo begin compileCLEAN :$(RM) $(OBJS_DIR)/*.o rm -rf $(BIN_DIR)保存退出。進(jìn)入 f2 目錄 #c
4、d ./f2 #vim f2.c輸入如下測(cè)試代碼:保存退出。#vim Makefile輸入如下內(nèi)容:保存退出。 進(jìn)入 main 目錄 #cd ./main #vim main.c輸入如下內(nèi)容:保存退出。#vim Makefile輸入如下內(nèi)容:保存退出。進(jìn)入 obj 目錄 #cd ./obj #vim Makefile輸入如下內(nèi)容:好了,到此準(zhǔn)備工作已經(jīng)完畢,然來測(cè)試一下寫的 makefile 是否好用。進(jìn)入頂層 Makefile 所在目錄,即 makefileTest 目錄。./$(BIN_DIR)/$(BIN) : $(OBJS)$(CC) -o $ $./$(OBJS_DIR)/main.
5、o: main.c$(CC) -c $ -o $#include main()pr1();pr2();return 0;./$(OBJS_DIR)/f2.o: f2.c$(CC) -c $ -o $#include “./include/myinclude.h”void pr2()prf(Message from ); return;#make會(huì)出現(xiàn)如下信息:目錄樹結(jié)構(gòu)如下:看到在 bin 目錄下生成了的目標(biāo)文件 myapp,在 obj 目錄下生成了.o 的中間文件。讓#b運(yùn)行下 myapp 看下結(jié)果吧。yapp也可以用如下命令清除中間文件和目標(biāo)文件,恢復(fù) make 之前的狀態(tài):#make C
6、LEAN可以看到已經(jīng)變?yōu)?make 之前的目錄狀態(tài)了。大功告成。最后給大家解釋一下頂層 makefile 中一些命令的的含義吧。1、注意到有一句echo $(SUBDIRS) echo 其實(shí)是一句顯示命令通常,make 會(huì)把其要執(zhí)行令行在命令執(zhí)行前輸出到屏幕上。當(dāng)用“”字符在用這個(gè)功能命令行前,那么,這個(gè)命令將不被 make 顯示出來,最具代表性的例子是,來像屏幕顯示一些信息。如:echo 正在編譯模塊.當(dāng)make 執(zhí)行時(shí),會(huì)輸出“正在編譯模塊”字串,但不會(huì)輸出命令,如果沒有“”,那么,make 將輸出:echo 正在編譯模塊.正在編譯模塊.如果 make 執(zhí)行時(shí),帶入 make 參數(shù)“-n”
7、或“-just-pr”,那么其只是顯示命令,但不會(huì)執(zhí)行命令,這個(gè)功能很有利于調(diào)試的 Makefile,看看行起來是什么樣子的或是什么順序的。書寫令是執(zhí)而 make 參數(shù)“-s”或“-snt”則是全面命令的顯示。2、(RM)并不是自己定義的變量,那它是從哪里來的呢?通常在清除文件的偽目標(biāo)所定義令中“rm”使用選項(xiàng)“f”(-force)來防止在缺少刪除文件時(shí)出錯(cuò)并退出,使“make clean”過程失敗。也可以在“rm”之前加上“-”來防止“rm”錯(cuò)誤退出,這種方式時(shí) make 會(huì)提示錯(cuò)誤信息但不會(huì)退出。為了不看到這些討厭的信息,需要使用上述的第式。另外 make 存在一個(gè)內(nèi)嵌隱含變量“RM”,它
8、被定義為:“RM = rm f” 。因此在書寫“clean”規(guī)則令行時(shí)可以使用變量“$(RM)”來代替“rm”,這樣可以免出現(xiàn)一些不必要的麻煩!這是的用法。3、make -C $這是一句嵌套 makefile 的語法,在一些大的工程中,會(huì)把不同模塊或是不同功能的源文件放在不同的目錄中,可以在每個(gè)目錄中都書寫一個(gè)該目錄的 Makefile,這有利于讓的 Makefile 變得更加地簡(jiǎn)潔, 而不至于把所有的東西全部寫在一個(gè)Makefile 中,這樣會(huì)很難著非常大的好處。的 Makefile,這個(gè)技術(shù)對(duì)于模塊編譯和分段編譯有例如,有一個(gè)子目錄叫 subdir,這個(gè)目錄下有個(gè) Makefile 文件,來指明了這個(gè)目錄下文件的編譯規(guī)則。那么總控的 Makefile 可以這樣書寫:subsystem:cd subdir & $(MAKE)其等價(jià)于:subsystem:$(MAKE) -C subdir定義$(MAKE)宏變量的意思是,也許的 make 需要一些參數(shù),所以定義成一個(gè)變量比較利于。這兩個(gè)例子的意思都是先進(jìn)入“subdir”目錄,然后執(zhí)行 make 命令。4. export CC OBJS BIN OBJS_DIR BIN_DIR把這個(gè) Makefile 叫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村農(nóng)田水利施工協(xié)議范本
- 知識(shí)產(chǎn)權(quán)保護(hù)保證金協(xié)議書
- 電子商務(wù)合同審批規(guī)則
- 股票質(zhì)押追加協(xié)議三篇
- 鐵路橋梁維修工程招標(biāo)合同三篇
- 聯(lián)學(xué)共建活動(dòng)協(xié)議書(2篇)
- 保潔人員務(wù)工合同范例
- 甘肅防水施工簽訂合同范例
- 廠房設(shè)計(jì)合同范例
- 自動(dòng)冰箱出租合同范例
- 24秋國(guó)家開放大學(xué)《0-3歲嬰幼兒的保育與教育》期末大作業(yè)參考答案
- 跟著音樂游中國(guó)智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 預(yù)拌混凝土企業(yè)質(zhì)量管理體系·程序文件
- 外國(guó)人換發(fā)或補(bǔ)發(fā)永久居留證件申請(qǐng)表樣本
- 塔吊安裝旁站監(jiān)理記錄表(示范稿)
- GCC認(rèn)證對(duì)整車的一般要求
- OBD-II標(biāo)準(zhǔn)故障代碼表
- 施工現(xiàn)場(chǎng)類安全隱患排查清單表
- 采購(gòu)項(xiàng)目組織履約、驗(yàn)收方案、程序、辦法
- 送貨單(三聯(lián)針式打印)
- pdca循環(huán)在護(hù)理教學(xué)中的應(yīng)用學(xué)習(xí)教案
評(píng)論
0/150
提交評(píng)論