linuxmakefile初學(xué)者學(xué)習(xí)心得_第1頁(yè)
linuxmakefile初學(xué)者學(xué)習(xí)心得_第2頁(yè)
linuxmakefile初學(xué)者學(xué)習(xí)心得_第3頁(yè)
linuxmakefile初學(xué)者學(xué)習(xí)心得_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux makefile初學(xué)者學(xué)習(xí)心得樣;另一個(gè)是根據(jù)某些情況指定makefile中的有效部分,makefile 也有了一定的理解:、Makefile 的作用:在學(xué)習(xí)linux系統(tǒng)中認(rèn)識(shí)到了makefile是必須要掌握的,開(kāi)始對(duì)于makefile不理解,經(jīng)過(guò)幾天的學(xué)習(xí)對(duì)makefile關(guān)系到整個(gè)工程的編譯規(guī)則,一個(gè)工程文件不計(jì)其數(shù),其按類(lèi)型,功能,模塊分別放在不同的目錄下,makefile定義了一些規(guī)則來(lái)指定,哪些文件需要先編譯, 些文件需要重新編譯,甚至進(jìn)行更復(fù)雜的功能操作,因?yàn)閙akefile就像一個(gè)shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)命令。也就是通過(guò) makefile規(guī)則編寫(xiě)m

2、akefile文件來(lái)實(shí)現(xiàn)執(zhí)行文件的生成,makefile 對(duì)于多個(gè)文件生成的執(zhí)行文件,若有某個(gè)發(fā)生改變后,makefile可以發(fā)現(xiàn)直接去編譯,從而減少了從頭開(kāi)始編譯的時(shí)間,提高編譯效率,同時(shí)也可 以很方便的修改文件,添加或者刪去某些文件。Makefile 的規(guī)則:1.隱晦規(guī)則:就是利用 make的 自動(dòng)推導(dǎo)的功能2.顯示規(guī)則:就是顯示的在命令行中寫(xiě)出目標(biāo)文件的依賴(lài)關(guān)系3.變量的定義:就變量的宏替換4.文件指示:其中包括三部分的內(nèi)容,一個(gè)是在一個(gè)makefile 中引用另一個(gè) makefile,就像c語(yǔ)言中的include就像c語(yǔ)言的預(yù)編譯#ifdef 一樣;還有一個(gè)就是定義一個(gè)多 行的命令。5

3、.注釋?zhuān)褐挥行凶⑨層?#號(hào)字符注釋如果你的makefile中用到了 #你可以用“ # “轉(zhuǎn)義、把源代碼編譯成目標(biāo)代碼一般是一個(gè)規(guī)則。把所有中間文件編譯鏈接在一起也是一個(gè)規(guī)則。編譯需要一定的依賴(lài)文件,例如把一個(gè).c文件編譯為個(gè)可執(zhí)行文件,則一般是通過(guò):先有.c再到.0然后到行文件 例子:#要想生成目標(biāo),必須先有,然后調(diào)用命令行g(shù)cc編譯生成依賴(lài)對(duì)象:gcc c o要想生成執(zhí)行程序 hello,必須先執(zhí)行規(guī)則,然后調(diào)用命令行g(shù)cc鏈接生成hello hello:gcc o hello在例子中要依賴(lài)調(diào)用gcc編譯器才能生成,執(zhí)行文件hello要依賴(lài)Makefile可以理解為make程序進(jìn)行解釋的一種

4、特殊腳本。首先make找到Makefile 的入口規(guī)則,一般是all,或者是用戶(hù)在命令行指定的target順著入口規(guī)則的依賴(lài)對(duì)象查找下去,檢查一直查找到最終的目標(biāo),即只有被依賴(lài)而沒(méi)有依賴(lài)其它對(duì)象的目標(biāo).即終目標(biāo)從最終目標(biāo)順著依賴(lài)關(guān)系依次執(zhí)行到入口規(guī)則中間只有運(yùn)行命令出錯(cuò),才停止執(zhí)行.如果是依賴(lài)文件,make會(huì)自動(dòng)檢測(cè)最后更新時(shí)間,只會(huì)去執(zhí)行已經(jīng)修改過(guò)的文件,以此來(lái)減少編譯時(shí)間、在makefile 也可以定義變量。如賦值:定義變量可在規(guī)則中使用,Makefile中使用變量 Makefile中的變量就像是 c語(yǔ)言的中宏一樣怎樣定義變量呢?我們?cè)趍akefile最上面定義一個(gè)變量OBJS =引用變量$(OBJS)這就等價(jià)于就像宏一樣的會(huì)被替換掉,等價(jià)后如果一個(gè)生成文件需要依賴(lài)多個(gè).0文件,則可用$(OBJS)代替。Makefile還有自推導(dǎo),判斷源代碼的依賴(lài)關(guān)系的功能,也就是不用我們?nèi)榱?.0文件而編寫(xiě)其他命令,例如:只要make看到一個(gè)*.0文件,它就會(huì)自動(dòng)的把*.c 文件 加到 依賴(lài)關(guān)系中,如果make找到一個(gè) 那么就會(huì)使的依賴(lài)文件。并且 gcc - c也會(huì)被推導(dǎo)出來(lái)。所以我們的makefile就會(huì)簡(jiǎn)單多了在編寫(xiě) makefile是也有很多小細(xì)節(jié)值得注意,最為重要的一點(diǎn)就是命開(kāi)頭的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論