校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Linux 下 Make 命令實例詳解

Linux 下 Make 命令實例詳解

熱門標簽:依蘭縣地圖標注app 百度中國地圖標注中心 山東企業電銷機器人價格 潮州地圖標注 安陽百應電銷機器人加盟 公司400電話辦理價格 琿春市地圖標注app 百度地圖標注開鎖電話 pageadm實現地圖標注

Linux 下 make 命令是系統管理員和程序員用的最頻繁的命令之一。管理員用它通過命令行來編譯和安裝很多開源的工具,程序員用它來管理他們大型復雜的項目編譯問題。本文我們將用一些實例來討論 make 命令背后的工作機制。

Make 如何工作的

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

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

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

Make 命令實例

下面是本文所使用的測試環境:

OS —— Ubunut 13.04
Shell —— Bash 4.2.45
Application —— 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 test

test.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 clean
rm -rf *.o test

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

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

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

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

下面是個例子:

$ make
make: Nothing to be done for `all’.

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

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

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

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

這是一個例子:

$ make -d | more
GNU Make 3.81
Copyright (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 A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Reading 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.txt
file1 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。

標簽:呼和浩特 公主嶺 常德 晉中 三明 林芝 香港 連云港

巨人網絡通訊聲明:本文標題《Linux 下 Make 命令實例詳解》,本文關鍵詞  Linux,下,Make,命令,實例,詳解,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux 下 Make 命令實例詳解》相關的同類信息!
  • 本頁收集關于Linux 下 Make 命令實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲欧洲精品一区二区三区不卡 | 最新国产の精品合集bt伙计| 美女爽到高潮91| 欧美日韩国产首页| 日日摸夜夜添夜夜添国产精品| 在线电影欧美成精品| 久久91精品久久久久久秒播| 国产欧美综合在线| 在线观看一区日韩| 精品综合免费视频观看| 国产精品人人做人人爽人人添| 色欲综合视频天天天| 日韩精品乱码免费| 日本一区二区三区四区在线视频| 色婷婷av一区二区三区软件 | 91蜜桃网址入口| 一区二区三区欧美在线观看| 日韩午夜电影在线观看| 97精品国产露脸对白| 另类小说综合欧美亚洲| 国产精品国产三级国产三级人妇| 777奇米四色成人影色区| 不卡欧美aaaaa| 毛片av中文字幕一区二区| 亚洲欧洲精品一区二区三区| 精品免费国产一区二区三区四区| av一本久道久久综合久久鬼色| 日韩av中文字幕一区二区三区| 国产精品国产三级国产普通话三级 | 亚洲第一电影网| 国产精品免费视频观看| 欧美精品一区二区高清在线观看| 欧美性色欧美a在线播放| 国产精品影视在线观看| 免费三级欧美电影| 亚洲国产精品视频| 亚洲丝袜另类动漫二区| 亚洲精品一区二区三区蜜桃下载| 在线亚洲一区观看| av亚洲精华国产精华精华| 国产一区二区91| 麻豆久久久久久| 日本成人在线一区| 日韩和欧美一区二区三区| 一区二区三区日韩欧美| 樱花影视一区二区| 一区二区在线观看视频| 亚洲人精品午夜| 日韩美女视频19| 亚洲精品免费在线观看| 中文字幕一区二区不卡| 久久精品亚洲精品国产欧美kt∨| 精品国产第一区二区三区观看体验| 欧美高清视频在线高清观看mv色露露十八 | av电影在线观看完整版一区二区| 国产精品一线二线三线精华| 久久99精品久久久久婷婷| 久久av中文字幕片| 老色鬼精品视频在线观看播放| 欧美a级理论片| 美女任你摸久久 | 精品1区2区在线观看| 日韩一区二区三区电影在线观看| 在线成人高清不卡| 日韩视频123| 久久久久久久免费视频了| 国产精品日日摸夜夜摸av| 亚洲码国产岛国毛片在线| 亚洲成人自拍网| 久久精品国产精品亚洲红杏| 韩国毛片一区二区三区| 岛国一区二区在线观看| 色域天天综合网| 日韩一区二区视频| 日本一区二区免费在线| 成人免费一区二区三区视频| 亚洲高清三级视频| 精品一区二区免费看| 成人免费电影视频| 欧美三级日本三级少妇99| 精品91自产拍在线观看一区| 亚洲免费av在线| 国产资源精品在线观看| 色婷婷综合五月| 欧美一级艳片视频免费观看| 国产精品久久久久久一区二区三区| 一区二区三区高清不卡| 久久er精品视频| 欧美视频在线不卡| 国产三级一区二区| 日一区二区三区| 波多野结衣91| 日韩欧美综合一区| 一区二区三区在线观看动漫| 国产一区二区91| 在线成人av影院| 一区二区在线看| www.成人网.com| 久久久精品天堂| 日本va欧美va瓶| 欧美主播一区二区三区美女| 欧美国产日韩在线观看| 久久精品国产99| 欧美性三三影院| 国产精品久久毛片a| 精品一区二区三区免费| 欧美日韩极品在线观看一区| 亚洲色图在线视频| 国产成人免费视频一区| 日韩精品在线一区二区| 亚洲mv在线观看| 色综合一个色综合亚洲| 国产精品系列在线| 国产精品中文有码| 久久综合九色综合久久久精品综合| 天天色图综合网| 欧美日韩视频在线观看一区二区三区 | 精品国产91乱码一区二区三区| 一区二区三区毛片| 白白色亚洲国产精品| 久久久久久久久久看片| 国产麻豆精品在线观看| 欧美mv日韩mv国产网站app| 三级一区在线视频先锋| 欧美日韩国产高清一区二区三区| 亚洲男人的天堂在线aⅴ视频| av午夜精品一区二区三区| 国产精品毛片久久久久久| 国产99精品国产| 久久麻豆一区二区| 成人一级视频在线观看| 国产精品丝袜黑色高跟| 成人av在线资源网| 日韩久久一区二区| 91福利视频网站| 亚洲午夜影视影院在线观看| 欧美亚洲国产一区在线观看网站| 亚洲美女精品一区| 欧美女孩性生活视频| 美日韩黄色大片| 久久在线观看免费| 成人av电影观看| 亚洲最大成人综合| 777精品伊人久久久久大香线蕉| 日韩高清在线不卡| 亚洲精品在线一区二区| 成人app下载| 亚洲高清免费在线| 欧美成人精品1314www| 国产精品一区二区免费不卡 | 日本一区二区三区免费乱视频| www.久久精品| 亚洲成人先锋电影| 精品久久人人做人人爽| 成人免费av在线| 亚洲综合另类小说| 日韩精品一区二区三区视频在线观看| 狠狠色狠狠色合久久伊人| 国产精品久久久爽爽爽麻豆色哟哟| 在线观看不卡视频| 国内久久婷婷综合| 亚洲人成网站色在线观看| 欧美大片拔萝卜| 色网站国产精品| 精品制服美女丁香| 一级中文字幕一区二区| 精品国内片67194| 欧美在线免费观看视频| 久久国产精品色婷婷| 国产精品毛片无遮挡高清| 欧美一区二区国产| 成人av片在线观看| 日本不卡免费在线视频| 国产精品第五页| 亚洲精品在线电影| 欧美日韩国产首页| 91丨porny丨首页| 国产精品一区专区| 日韩av一级片| 一区二区三区在线免费视频| 精品国产91亚洲一区二区三区婷婷| 91麻豆.com| av激情成人网| 国产成人av电影免费在线观看| 亚洲国产wwwccc36天堂| 综合久久综合久久| 国产欧美精品国产国产专区| 91精品国产综合久久久久久久| 在线精品亚洲一区二区不卡| 99精品久久只有精品| 国产91精品一区二区麻豆亚洲| 奇米综合一区二区三区精品视频| 一区二区三区产品免费精品久久75| 中文字幕 久热精品 视频在线| 精品99久久久久久| 久久久亚洲高清| 久久精品欧美日韩| 国产亚洲成年网址在线观看| 久久久久9999亚洲精品| 国产亚洲欧洲一区高清在线观看|