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

首頁 > 服務器 > Linux服務器 > 正文

詳解linux下make命令的使用方法

2024-09-05 23:02:27
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了linux下make命令的使用方法,Linux 下 make 命令是系統管理員和程序員用的最頻繁的命令之一,感興趣的朋友可以參考一下
 

本文我們將用一些實例來討論 make 命令背后的工作機制。

Make 如何工作的
對于不知道背后機理的人來說,make 命令像命令行參數一樣接收目標。這些目標通常存放在以 “Makefile” 來命名的特殊文件中,同時文件也包含與目標相對應的操作。更多信息,閱讀關于 Makefiles 如何工作的系列文章。

當 make 命令第一次執行時,它掃描 Makefile 找到目標以及其依賴。如果這些依賴自身也是目標,繼續為這些依賴掃描 Makefile 建立其依賴關系,然后編譯它們。一旦主依賴編譯之后,然后就編譯主目標(這是通過 make 命令傳入的)。

現在,假設你對某個源文件進行了修改,你再次執行 make 命令,它將只編譯與該源文件相關的目標文件,因此,編譯完最終的可執行文件節省了大量的時間。

Make 命令實例
下面是本文所使用的測試環境:

OS —— Ubunut 13.04Shell —— Bash 4.2.45Application —— GNU Make 3.81

下面是工程的內容:

$ ls anotherTest.c Makefile test.c test.h

下面是 Makefile 的內容:

all: test test: test.o anotherTest.o   gcc -Wall test.o anotherTest.o -o testtest.o: test.c   gcc -c -Wall test.c anotherTest.o: anotherTest.c   gcc -c -Wall anotherTest.c clean:   rm -rf *.o test

現在我們來看 Linux 下一些 make 命令應用的實例:

1. 一個簡單的例子

為了編譯整個工程,你可以簡單的使用 make 或者在 make 命令后帶上目標 all。

$ make gcc -c -Wall test.c gcc -c -Wall anotherTest.c gcc -Wall test.o anotherTest.o -o test

你能看到 make 命令第一次創建的依賴以及實際的目標。

如果你再次查看目錄內容,里面多了一些 .o 文件和執行文件:

$ ls anotherTest.c anotherTest.o Makefile test test.c test.h test.o

現在,假設你對 test.c 文件做了一些修改,重新使用 make 編譯工程:

$ make gcc -c -Wall test.c gcc -Wall test.o anotherTest.o -o test

你可以看到只有 test.o 重新編譯了,然而另一個 Test.o 沒有重新編譯。

現在清理所有的目標文件和可執行文件 test,你可以使用目標 clean:

$ make cleanrm -rf *.o test$ lsanotherTest.c Makefile test.c test.h

你可以看到所有的 .o 文件和執行文件 test 都被刪除了。

2. 通過 -B 選項讓所有目標總是重新建立

到目前為止,你可能注意到 make 命令不會編譯那些自從上次編譯之后就沒有更改的文件,但是,如果你想覆蓋 make 這種默認的行為,你可以使用 -B 選項。

下面是個例子:

$ makemake: Nothing to be done for `all'.$ make -Bgcc -c -Wall test.cgcc -c -Wall anotherTest.cgcc -Wall test.o anotherTest.o -o test

你可以看到盡管 make 命令不會編譯任何文件,然而 make -B 會強制編譯所有的目標文件以及最終的執行文件。

3. 使用 -d 選項打印調試信息

如果你想知道 make 執行時實際做了什么,使用 -d 選項。

這是一個例子:

$ make -d | moreGNU Make 3.81Copyright (C) 2006 Free Software Foundation, Inc.This is free software; see the source for copying conditions.There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR APARTICULAR PURPOSE.This program built for x86_64-pc-linux-gnuReading makefiles…Reading makefile `Makefile'…Updating makefiles….Considering target file `Makefile'.Looking for an implicit rule for `Makefile'.Trying pattern rule with stem `Makefile'.Trying implicit prerequisite `Makefile.o'.Trying pattern rule with stem `Makefile'.Trying implicit prerequisite `Makefile.c'.Trying pattern rule with stem `Makefile'.Trying implicit prerequisite `Makefile.cc'.Trying pattern rule with stem `Makefile'.Trying implicit prerequisite `Makefile.C'.Trying pattern rule with stem `Makefile'.Trying implicit prerequisite `Makefile.cpp'.Trying pattern rule with stem `Makefile'.--More--

這是很長的輸出,你也看到我使用了 more 命令來一頁一頁顯示輸出。

4. 使用 -C 選項改變目錄

你可以為 make 命令提供不同的目錄路徑,在尋找 Makefile 之前會切換目錄的。

這是一個目錄,假設你就在當前目錄下:

$ ls file file2 frnd frnd1.cpp log1.txt log3.txt log5.txtfile1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt

但是你想運行的 make 命令的 Makefile 文件保存在 ../make-dir/ 目錄下,你可以這樣做:

$ make -C ../make-dir/ make: Entering directory `/home/himanshu/practice/make-dir' make: Nothing to be done for `all'. make: Leaving directory `/home/himanshu/practice/make-dir

你能看到 make 命令首先切到特定的目錄下,在那執行,然后再切換回來。

5. 通過 -f 選項將其它文件看作 Makefile

如果你想將重命名 Makefile 文件,比如取名為 my_makefile 或者其它的名字,我們想讓 make 將它也當成 Makefile,可以使用 -f 選項。

make -f my_makefile

通過這種方法,make 命令會選擇掃描 my_makefile 來代替 Makefile。

以上就是本文的詳細內容,希望對大家的學習有所幫助。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕av一区二区三区谷原希美| 亚洲aaaaaa| 揄拍成人国产精品视频| 国产精品成人免费电影| 亚洲欧美日韩国产中文专区| 亚洲一区二区在线播放| 97免费中文视频在线观看| 91美女福利视频高清| 日韩激情视频在线| 日韩电影在线观看永久视频免费网站| 亚洲风情亚aⅴ在线发布| 日韩中文字幕第一页| 国产精欧美一区二区三区| 人人爽久久涩噜噜噜网站| 91精品国产91久久久久久吃药| 亚洲一区二区在线播放| 亚州成人av在线| 欧美大尺度在线观看| 国产成人一区二区| 亚洲女人天堂视频| 欧美在线视频免费播放| 日本三级韩国三级久久| 97超碰国产精品女人人人爽| 亚洲第一精品夜夜躁人人爽| 日韩精品视频在线观看免费| 色综合老司机第九色激情| 日韩欧美国产成人| 亚洲欧美精品中文字幕在线| 国产日韩欧美中文在线播放| 91精品国产高清久久久久久| 中文字幕av一区中文字幕天堂| 日韩一区二区精品视频| 久久精品国产亚洲精品| 亚洲欧美日韩国产精品| 日韩小视频网址| 伊人一区二区三区久久精品| 在线观看日韩av| 久久九九全国免费精品观看| 欧美激情精品久久久久| 久久久久久久久爱| 久久最新资源网| 亚洲欧洲日产国码av系列天堂| 亚洲成人精品视频| 国产日韩中文字幕在线| 国产丝袜一区视频在线观看| 97激碰免费视频| 久久久欧美精品| 日韩视频免费在线观看| 97国产精品免费视频| 一个人看的www欧美| 亚洲第一中文字幕| 亚洲精品视频播放| 国产美女精彩久久| 97欧美精品一区二区三区| 中文字幕欧美专区| 欧美色播在线播放| 久久国产加勒比精品无码| 国产一区欧美二区三区| 日本午夜在线亚洲.国产| 国产欧美一区二区三区四区| 国产精品国产自产拍高清av水多| 欧美成人精品在线观看| www.日本久久久久com.| www.xxxx欧美| 日韩精品中文在线观看| 深夜福利国产精品| 久久久亚洲福利精品午夜| 国产婷婷色综合av蜜臀av| 日韩欧美在线观看视频| yellow中文字幕久久| 日韩精品极品在线观看播放免费视频| 亚洲精品第一国产综合精品| 欧美成人免费全部观看天天性色| 精品毛片三在线观看| 欧美成年人视频网站| 成人在线观看视频网站| 最新69国产成人精品视频免费| 久久99热精品这里久久精品| 国产欧美在线播放| 欧美最猛性xxxx| 尤物九九久久国产精品的分类| 91精品视频一区| 午夜精品久久久久久久99热| 亚洲第一偷拍网| 在线激情影院一区| 日韩av综合网| 97视频在线观看视频免费视频| 懂色av一区二区三区| 国内精品中文字幕| 欧美日韩美女在线| 亚洲国产欧美一区二区丝袜黑人| 福利视频一区二区| 国产91在线播放九色快色| 亚洲欧美自拍一区| 在线精品播放av| 5278欧美一区二区三区| 国产亚洲精品91在线| 久久久精品视频成人| 欧美激情中文字幕在线| 久久精品欧美视频| 亚洲成人精品久久| 日韩在线播放一区| 国产极品精品在线观看| 国产精品www网站| 日韩成人激情影院| 中文字幕亚洲二区| 欧美午夜女人视频在线| 国产亚洲欧美日韩一区二区| 午夜精品久久久久久久白皮肤| 欧美在线国产精品| 成人免费在线视频网址| 亚洲网站在线播放| 久久久女女女女999久久| 久久精品国产一区二区电影| 久久天天躁狠狠躁夜夜躁2014| 久久精品人人做人人爽| 亚洲日本中文字幕| 黄色一区二区在线观看| 久久久久久久91| 国产精品电影网站| 欧美日韩国产精品一区| 美女黄色丝袜一区| 国产精品嫩草视频| 美日韩精品免费观看视频| 亚洲free嫩bbb| 亚洲美女www午夜| 亚洲免费精彩视频| 2019中文字幕在线观看| 日韩电影在线观看中文字幕| 欧美精品日韩www.p站| 亚洲性av在线| 国产中文字幕亚洲| 欧美成人激情在线| 国产成人精品在线观看| 好吊成人免视频| 最近2019年中文视频免费在线观看| 日韩福利视频在线观看| 色老头一区二区三区在线观看| 日韩中文字幕视频在线观看| 福利视频导航一区| 成人黄色av免费在线观看| 亚洲国产精品人人爽夜夜爽| 91久久精品久久国产性色也91| 国产91在线播放| 欧美二区在线播放| 亚洲一区999| 亚洲精品乱码久久久久久金桔影视| 国产一区二区三区视频在线观看| 日本国产一区二区三区| 欧美性xxxx18| 亚洲欧美日韩综合| 久久大大胆人体| 国外成人在线直播| 欧美一区视频在线| 九九视频直播综合网| 亚洲va欧美va国产综合久久| 亚洲国产精品久久精品怡红院| 一区二区亚洲欧洲国产日韩| 国产精品久久久久久久天堂| 国产精品欧美日韩一区二区| 性欧美暴力猛交69hd| 精品爽片免费看久久| 日本欧美国产在线| 久久久www成人免费精品|