欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用

這篇文章主要介紹“Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用”,在日常操作中,相信很多人在Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用

Makefile

Makefile是一個(gè)文本文件,記錄一個(gè)項(xiàng)目的構(gòu)建規(guī)則流程。在工作中會(huì)不會(huì)寫makefile,從一個(gè)側(cè)面說明了一個(gè)人是否具備完成大型工程的能力,同時(shí)一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分別放在若干個(gè)目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進(jìn)行更復(fù)雜的功能操作,其帶來的好處就是——“自動(dòng)化編譯”,一旦寫好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編
譯,極大的提高了軟件開發(fā)的效率。

make

make是一個(gè)命令工具,是一個(gè)解釋makefile中指令的命令工具,一般來說,大多數(shù)的IDE都有這個(gè)命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make??梢姡琺akefile都成為了一
種在工程方面的編譯方法。make是一條命令,makefile是一個(gè)文件,兩個(gè)搭配使用,完成項(xiàng)目自動(dòng)化構(gòu)建。

工作原理

在Makefile中會(huì)形成各個(gè)文件之間的依賴關(guān)系,比如一個(gè)code.exe是在code.o 的基礎(chǔ)上通過鏈接生成的,而code.o是在code.s的基礎(chǔ)上通過匯編形成的,code.s是在code.i的基礎(chǔ)上通過編譯生成,code.i是在code.c的基礎(chǔ)上預(yù)處理完成之后生成,如此層層尋找源頭。其規(guī)則使用倒敘的方法,將第一個(gè)文件視作最后完后的文件,若當(dāng)前文件未生成則通過依賴關(guān)系以及相互生成的方法進(jìn)行層層推進(jìn),最終完成全部文件的形成。
依賴關(guān)系

A:B ??A是依賴于B

依賴方法

gcc 選項(xiàng) + B -o +A ??A是B經(jīng)過處理生成的文件

項(xiàng)目清理

工程是需要被清理的,像clean這種,沒有被第一個(gè)目標(biāo)文件直接或間接關(guān)聯(lián),那么它后面所定義的命令將不會(huì)被自動(dòng)執(zhí)行,不過,我們可以顯示要make執(zhí)行。即命令——“make clean”,以此來清除所有的目標(biāo)文件,以便重編譯。但是一般我們這種clean的目標(biāo)文件,我們將它設(shè)置為偽目標(biāo),用 .PHONY 修飾,偽目標(biāo)的特性是,總是被
執(zhí)行的。

原理

make會(huì)在當(dāng)前目錄下找名字叫“Makefile”或“makefile”的文件。

如果找到,它會(huì)找文件中內(nèi)容中的第一個(gè)文件,并把這個(gè)文件作為最終的目標(biāo)文件。

如果該文件當(dāng)前不存在,或是該文件的依賴文件的修改時(shí)間要比當(dāng)前這個(gè)文件要新,那么,他就會(huì)執(zhí)行后面所定義的命令來生成當(dāng)前文件。

如果該文件的依賴文件不存在,那么便對(duì)這個(gè)依賴文件進(jìn)行如同第2,3步的步驟,知道找到最后的源文件為止

當(dāng)然,你的C文件和H文件是存在的啦,于是make會(huì)生成 .o 文件,然后再用 .o 文件聲明make的終極任務(wù),也就是執(zhí)行文件了。

這就是整個(gè)make的依賴性,make會(huì)一層又一層地去找文件的依賴關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件。

在找尋的過程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴的文件找不到,那么make就會(huì)直接退出,并報(bào)錯(cuò),而對(duì)于所定義的命令的錯(cuò)誤,或是編譯不成功,make根本不理。

make只管文件的依賴性,即,如果在我找了依賴關(guān)系之后,冒號(hào)后面的文件還是不在,那么對(duì)不起,我就不工作啦。

make 每次在Makefile中只會(huì)找到第一個(gè)目標(biāo)對(duì)象進(jìn)行生成,生成之后就會(huì)退出(不會(huì)生成第二個(gè)對(duì)象)

.PHONY: clean

clear:

??rm -rf $(obj)

【補(bǔ)充】

1.預(yù)定義變量的使用:[$@ ]、[ $^]、[ $<],可以用以上三個(gè)對(duì)文件名進(jìn)行替換

$@ :表示目標(biāo)對(duì)象

$^:表示所有依賴對(duì)象

&<:表示依賴對(duì)象的第一個(gè)

2. $ (wildcard ./.c)獲取當(dāng)前目錄下所有的以.c結(jié)尾的文件的文件名稱【例】 src=$(wildcard ./.c) ? code: $ (str)

3. $ (patsubst %.c, %.o,$(str))表示將str變量中的.c文件替換成.o,然后存放在obj變量中。

4. 偽對(duì)象:聲明一個(gè)目標(biāo)對(duì)象與外部文件無關(guān),表示每次對(duì)這個(gè)對(duì)象不管是否最新都要重新生成,且不管外部是否能夠存在,都要每次無論如何都執(zhí)行語(yǔ)句[.PHONY:]

5.程序的編譯過程:一般包含預(yù)處理、編譯、匯編、鏈接,但是在實(shí)際項(xiàng)目構(gòu)建中整體分為兩步,即編譯和鏈接。這樣的好處在于,如果只是修改了一個(gè).c文件,對(duì)于之前的直接對(duì)所有.c進(jìn)行編譯生成可執(zhí)行程序的過程來說,需要重新編譯所有的.c生成可執(zhí)行程序,這樣的效率非常低下,因此分為兩步進(jìn)行操作,先把每個(gè).c都是生成自己的.o,然后再將所有的.o鏈接在一起,一旦一個(gè).c發(fā)生改變只需要對(duì)這一個(gè).c進(jìn)行生成.o之后,替換程序中的指定模塊就可以。

例1.創(chuàng)建一個(gè)一般的Makefile

Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用

Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用

例2.使用預(yù)定義編寫的Makefile

Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用

到此,關(guān)于“Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)頁(yè)名稱:Linux自動(dòng)化構(gòu)建工具M(jìn)akefile與make怎么用
瀏覽地址:http://aaarwkj.com/article8/jeepip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)商城網(wǎng)站、企業(yè)建站、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
国内极品尤物视频在线| 日韩av一区三区在线| 日韩亚洲毛片全在线播放| 亚洲高清精品一区二区| 国产女同互慰一区二区| 日本又色又爽又黄的观看 | 尤物天堂av一区二区| 国产日韩欧美在线精品| 好色人妻在线播放中文字幕| av高清不卡一区二区免费在线| 亚洲伦理av在线观看| 国产一区二区三区午夜视频| 国产熟女一区二区精品视频| 91久久亚洲综合精品日本| 久久综合亚洲鲁鲁五月天| 青青草原在线免费视频| 欧美精品黑人三级精品| 国产三级全黄在线播放| 亚洲天堂男人的天堂狠狠操| 日韩人妻一区中文字幕| 手机不卡高清播放一区二区| 高级会所口爆视频在线播放视频| 亚洲一区二区三区香蕉不卡| 蜜桃传媒18传媒在线| 久久精品国产视频在热| 欧美日韩亚洲一区在线| 亚洲精品啪啪一区二区| 日韩av一区二区国产| 国产三级黄色片免费看| 国产精品国产精品无卡区| 欧美成人精品欧美一级乱| 男女性情视频免费大全网站| 日本一区中文字幕怎么用| 欧美一区二区三区蜜桃| 欧美日韩一区二区三区四区在线观看 | 亚洲国产精品一区性色| 国产美女口爆吞精久久| 日本东京热免一区二区| 欧美精品高清在线视频| 国产成人三级在线影院| 日韩欧美黄片一区二区三区|