欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linuxmakefile文件有哪些內(nèi)容

本篇內(nèi)容主要講解“l(fā)inux makefile文件有哪些內(nèi)容”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“l(fā)inux makefile文件有哪些內(nèi)容”吧!

創(chuàng)新互聯(lián)公司專注于青云譜企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。青云譜網(wǎng)站建設(shè)公司,為青云譜等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

#sample Makefile
edit : main.o kbd.o command.o display.o \ #***次:作為目標(biāo)“edit”的依賴文件列表出現(xiàn)
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o \#第二次:規(guī)則命令行中作為“cc”的參數(shù)列表
insert.o search.o files.o utils.o
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o

在書寫時(shí),一個(gè)較長(zhǎng)行可以使用反斜線(\)分解為多行,這樣做可以使Makefile清晰、容易閱讀。注意:反斜線之后不能有空格(這也是大家最容易犯的錯(cuò)誤,而且錯(cuò)誤比較隱蔽)。大家在書寫Makefile時(shí),推薦者中將較長(zhǎng)行分解為使用反斜線連接得多個(gè)行的方式。當(dāng)我們完成了這個(gè)Maekfile以后;創(chuàng)建可執(zhí)行程序 “edit”,你所要做的就是在包含此Makefile的目錄(當(dāng)然也在代碼所在的目錄)下輸入命令“make”。刪除已經(jīng)本目錄下生成的文件和所有的.o文件,只需要輸入命令“make clean”就可以了。

為了避免編寫代碼時(shí)工作量重復(fù)的這個(gè)問題,在實(shí)際工作中大家都比較認(rèn)同的方法是,使用一個(gè)變量“objects”、“OBJECTS”、 “objs”、“OBJS”、“obj”或者“OBJ”來作為所有的.o文件的列表的替代。在使用到這些文件列表的地方,使用此變量來代替。在上例的 Makefile中可是添加這樣一行:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
“objects”作為一個(gè)變量,它代表所有的.o文件的列表。在定義了此變量后,我們就可以在需要使用這些.o文件列表的地方使用“$(objects)”來表示它,而不需要羅列所有的.o文件列表。因此上例的規(guī)則就可以這樣寫:
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
…….
…….
clean :
rm edit $(objects)
需要增加或者去掉一個(gè).o文件時(shí)。我們只需要改變“objects”的定義(加入或者去掉若干個(gè).o文件)。這樣做不但減少維護(hù)的工作量,而且可以避免由于遺漏而產(chǎn)生錯(cuò)誤的可能。

在使用make編譯.c源文件時(shí),可以省略編譯一個(gè).c文件所使用的命令。這是因?yàn)閙ake存在一個(gè)默認(rèn)的規(guī)則,能夠自動(dòng)完成對(duì).c文件的編譯并生成對(duì)應(yīng)的.o文件。它執(zhí)行命令“cc -c”來編譯.c源文件。對(duì)于上邊的例子,此默認(rèn)規(guī)則就使用命令“cc -c main.c -o main.o”來創(chuàng)建文件“main.o”。

書寫Makefile時(shí),對(duì)于一個(gè).c文件如果使用make的隱含規(guī)則,那么它會(huì)被自動(dòng)作為對(duì)應(yīng).o文件的一個(gè)依賴文件(對(duì)應(yīng)是指:文件名除后綴外,其余都相同的兩個(gè)文件)。因此我們也可以在規(guī)則中省略目標(biāo)的倚賴.c文件。

上邊的例子就可以以更加簡(jiǎn)單的方式書寫,使用了變量“objects”。簡(jiǎn)化版本的Makefile
GUN make中文手冊(cè)如下:

# sample Makefile
objects = main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)

書寫規(guī)則建議的方式是:?jiǎn)文繕?biāo),多依賴。就是說盡量要做到一個(gè)規(guī)則中只存在一個(gè)目標(biāo)文件,可有多個(gè)依賴文件。盡量避免多目標(biāo),單依賴的方式。這樣后期維護(hù)也會(huì)非常方便,而且Makefile會(huì)更清晰、明了。

.PHONY : clean
clean :
-rm edit $(objects)
這兩個(gè)實(shí)現(xiàn)有兩點(diǎn)不同: 

  1. 通過“.PHONY”特殊目標(biāo)將“clean”目標(biāo)聲明為偽目標(biāo)。防止當(dāng)磁盤上存在一個(gè)名為“clean”文件時(shí),“clean”所在規(guī)則的命令無法執(zhí)行。2. 在命令行之前使用“-”,意思是忽略命令“rm”的執(zhí)行錯(cuò)誤。

  2. 默認(rèn)的情況下,make會(huì)在工作目錄(執(zhí)行make的目錄)下按照文件名順序?qū)ふ襩inux makefile文件讀取并執(zhí)行,查找的文件名順序?yàn)椋骸癎NUmakefile”、“makefile”、“Makefile”。

如果make程序在工作目錄下無法找到以上三個(gè)文件中的任何一個(gè),它將不讀取任何其他文件作為解析對(duì)象。當(dāng)linux makefile文件的命名不是這三個(gè)任何一個(gè)時(shí),需要通過make的“-f”或者“--file”選項(xiàng)來指定make讀取的makefile文件。給make指定makefile文件的格式為:“-f NAME”或者“—file=NAME”,它指定文件“NAME”作為執(zhí)行make時(shí)讀取的linux makefile文件。也可以通過多個(gè)“-f”或者“--file”選項(xiàng)來指定多個(gè)需要讀取的 makefile文件,多個(gè)makefile文件將會(huì)被按照指定的順序進(jìn)行連接并被make解析執(zhí)行。當(dāng)通過“-f”或者“--file”指定make讀取makefile的文件時(shí),make就不再自動(dòng)查找這三個(gè)標(biāo)準(zhǔn)命名的makefile文件。

到此,相信大家對(duì)“l(fā)inux makefile文件有哪些內(nèi)容”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章標(biāo)題:linuxmakefile文件有哪些內(nèi)容
文章地址:http://www.chinadenli.net/article46/pecpeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)軟件開發(fā)用戶體驗(yàn)

廣告

聲明:本網(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)

成都網(wǎng)站建設(shè)