亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

makefile中的target到底代表什么?

2024-06-28 13:20:41
字體:
來源:轉載
供稿:網友
makefile中的target到底代表什么?

  剛開始用make的時候,以為makefile中名字叫做main的target就是make默認執行的target(中文翻譯叫做標的(di,四聲),下面統一稱呼為標的),然后曾經很天真地犯過這樣的錯誤,就一個.c文件(名字叫做main.c),功能是打印helloworld,然后我寫了這樣的makefile來編譯:

main:    gcc -o main main.c

  結果第一次make命令能編譯,后面如果還想再用make命令編譯的話,就會出現這樣的錯誤:

  

  即使更改了main.c中的代碼,也會出現這樣的錯誤。當時我一直想不通,為什么第一次能編譯,后面編譯就會報錯呢,后來學習了一下makefile的語法,才知道makefile是這樣定義的。

target ...: PRerequisites            command            command

  target代表的是一個 標的,prerequisites代表的是這個標的所依賴的標的,下面那個command就是生成這個標的的命令。

  那么那個標的代表的是什么呢?其實它就是代表了一個與他同名的文件,編譯之后生成的.o文件,編譯鏈接之后生成的可執行文件或者其他任何類型的文件,例如main這個標的代表的就是main這個可執行文件。

  可能這樣將有點晦澀,就拿我上面那個錯誤來舉例,在上面那個例子中,執行make之后,它做的工作是這樣的:

    1.查找makefile,默認執行第一個標的(即main)。

    2.檢查main這個文件存不存在或者需不需要更新。

    3.如果main文件不存在,則執行下面那個gcc命令來生成這個文件。

    4.如果main文件已經存在,且它的修改時間要早于依賴文件的修改時間(即這個main文件過期了),那么執行下面的gcc命令來生成這個文件。

  看了上面那個步驟,大家應該就能理解為什么我上面會報錯了吧,就是由于我那個main標的所依賴的文件為空,所以那個main文件永遠不會過期,所以,每回執行make命令都會提示main is up to date.(意思是這個文件是最新的,不需要更新了)

  那么該怎么做才是對的呢,我們可以改成這種形式:

main: main.c    gcc -o main main.c

  這里給main這個標的添加了一個依賴,依賴于main.c這個文件,如果main.c這個文件的修改時間晚于main這個文件的修改時間,那么就執行下面的gcc命令來生成main這個文件。

  OK,分析完了這個,我們再來分析一下另一個經典的標的,clean,還是上面的栗子,我添加上clean的標的,就是刪除生成的main這個可執行文件,如下所示:

main: main.c    gcc -o main main.cclean:    rm main

  此時如果我運行了make clean命令,那么就會刪除main這個可執行文件,那么這個標的的原理是什么呢?其實當我們運行了make clean命令之后,它的執行步驟是這樣的:

  由于clean標的沒有依賴的文件,所以它就是檢查clean這個文件是否存在,如果不存在,那么執行clean標的下面的命令來生成clean文件。但是下面的rm命令又不會生成clean文件,所以導致的結果就是每回我們運行make clean命令,都會執行下面的rm命令。如下圖所示:

  

  那么如果我們在當前目錄下添加上一個clean文件會怎么樣呢,就會出現下面的效果了:

  

  這次,clean標的下面的命令都不會被執行了。

  為了解決這種沖突,我們可以把clean定義成一個偽目標文件。具體如下:

  

  這樣,即使當前目錄下面存在clean這個文件,make clean命令也會照常執行,如下圖所示:

  

  還有一點需要注意的是,clean標的的命令中,rm前面那個-號表示如果中途出錯,則會忽略錯誤,繼續執行。例如如果main.o,不存在,make clean會報錯,但不會停止,如下圖所示:

      

  OK,我想聊的makefile的內容就是這些,最后來總結一下吧。

  1.makefile中的每個標的都代表了一個文件。

  2.如果只運行make命令,那么默認執行第一個標的。

  3.執行一個標的時,會做兩件事情:

    3.1.查看與這個標的同名的文件是否存在,如果不存在,那么就運行這個標的下面的命令。

    3.2.如果與這個標的同名的文件已經存在,那么就檢查與這個標的同名的文件是否需要更新(即標的文件的修改時間是否早于依賴文件的修改時間),如果需要更新,那么就運行這個標的下面的命令。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019年手机中文字幕| 国产精品日韩在线播放| 国产视频在线一区二区| 欧美成人精品三级在线观看| 96pao国产成视频永久免费| 国产精品看片资源| 高清欧美性猛交xxxx黑人猛交| 日韩欧美一区二区三区久久| 97在线视频国产| 精品国内亚洲在观看18黄| 国产精品白丝jk喷水视频一区| 55夜色66夜色国产精品视频| 国产成人亚洲综合| 51精品国产黑色丝袜高跟鞋| 国产精品一区二区3区| 国产精品久久久久久久av大片| 亚洲免费人成在线视频观看| 欧美xxxx14xxxxx性爽| 日韩欧美一区二区三区久久| 九九久久精品一区| 亚州av一区二区| 97超碰色婷婷| 成人福利在线观看| 国产精品一区二区久久精品| 在线精品播放av| 国产精品色午夜在线观看| 日韩精品在线视频| y97精品国产97久久久久久| 美女扒开尿口让男人操亚洲视频网站| 精品调教chinesegay| 不卡中文字幕av| 久久天天躁狠狠躁老女人| 久久夜色精品国产亚洲aⅴ| 日韩av一区二区在线观看| 国产欧美一区二区三区在线看| 日韩av片电影专区| 欧美老少配视频| 欧美高清videos高潮hd| 欧美电影免费看| 欧美激情综合亚洲一二区| 亚洲综合小说区| 中文字幕日韩欧美精品在线观看| 国产精品久久久久久久7电影| 国产亚洲免费的视频看| www国产亚洲精品久久网站| 成人国产精品久久久久久亚洲| 欧美日韩另类在线| 欧美成aaa人片在线观看蜜臀| 久久精品国产电影| 国产精品日韩久久久久| 久久久久久亚洲精品中文字幕| 在线亚洲午夜片av大片| 欧美成人在线免费视频| 青青草原一区二区| 91在线免费网站| 青青草原成人在线视频| 在线观看国产精品日韩av| 亚洲精品一区二区三区婷婷月| 日韩电影中文字幕在线| 国产精品视频yy9099| 亚洲国产精久久久久久| 91香蕉嫩草影院入口| 国产精品久久久久久久一区探花| 性欧美暴力猛交69hd| 91成人天堂久久成人| 97精品国产97久久久久久春色| 亚洲第一页在线| 日韩激情视频在线| 欧美精品久久久久a| 国产精品入口日韩视频大尺度| 欧美激情国产日韩精品一区18| 欧美成人一区二区三区电影| 国产欧美一区二区三区视频| 亚洲国产成人精品久久久国产成人一区| 亚洲精品电影网| 亚洲欧洲成视频免费观看| 日韩在线欧美在线国产在线| 国产极品jizzhd欧美| 日韩风俗一区 二区| 欧美一区三区三区高中清蜜桃| 国产精品中文字幕在线| 久色乳综合思思在线视频| 国产精品免费久久久久影院| 欧美午夜激情视频| 国产精品情侣自拍| 亚洲综合中文字幕68页| 国产成人一区二区| 欧美贵妇videos办公室| 国产精品久久久久久久久粉嫩av| 欧美激情视频免费观看| 中文字幕亚洲欧美日韩2019| 国产精品影院在线观看| 自拍偷拍亚洲区| 精品国内自产拍在线观看| 欧美一级电影久久| 国产精品6699| 欧美亚洲激情在线| 亚洲最大中文字幕| 日韩中文字幕av| 欧美综合激情网| 尤物九九久久国产精品的特点| 亚洲人成电影网站色| 国产精品美乳在线观看| 欧美亚洲成人网| 精品久久久久久久大神国产| 久久久久亚洲精品成人网小说| 国产精品av在线播放| 亚洲一区二区在线| 久久人人爽人人爽人人片av高清| 久久综合电影一区| 国产精品久久久久久五月尺| 中文字幕综合在线| 成人在线一区二区| 欧美精品videos性欧美| 亚洲天堂精品在线| 成人高清视频观看www| 久久久久久国产精品三级玉女聊斋| 欧美激情精品久久久久久变态| 136fldh精品导航福利| 日本一本a高清免费不卡| 欧美日韩激情小视频| 欧美一区二三区| 91精品国产综合久久久久久蜜臀| 中文字幕亚洲激情| 欧美性69xxxx肥| 97久久国产精品| 国产精品99导航| 中文字幕在线成人| 菠萝蜜影院一区二区免费| 九九热精品视频在线播放| 国产一区玩具在线观看| 国产一区二区三区日韩欧美| 亚洲国产精品va在线看黑人动漫| 日韩在线观看免费av| 亚洲专区中文字幕| 91视频免费在线| 欧美日韩第一视频| 精品视频偷偷看在线观看| 国产欧美一区二区三区四区| 久久久亚洲影院你懂的| 欧美体内谢she精2性欧美| 亚洲视频在线观看视频| 久久久999精品| 久久久久久中文| 91精品国产综合久久香蕉922| 日韩性xxxx爱| 91国产美女在线观看| 亚洲男人的天堂网站| 成人精品一区二区三区电影黑人| 国产成人精品一区二区在线| 欧美激情第99页| 久久久久999| 最好看的2019的中文字幕视频| 红桃av永久久久| 欧美一级淫片丝袜脚交| 国产一区二区欧美日韩| 91高清视频免费观看| 国产精品久久久久久av福利软件| 91在线观看欧美日韩| 成人免费福利视频| 日本精品久久久| 成人妇女淫片aaaa视频| 91国内产香蕉| 777精品视频|