亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買(mǎi)流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Linux 下 Make 命令實(shí)例詳解

添加時(shí)間:2017-1-12 20:49:06  添加: 思海網(wǎng)絡(luò) 
Linux 下 make 命令是系統(tǒng)管理員和程序員用的最頻繁的命令之一。管理員用它通過(guò)命令行來(lái)編譯和安裝很多開(kāi)源的工具,程序員用它來(lái)管理他們大型復(fù)雜的項(xiàng)目編譯問(wèn)題。本文我們將用一些實(shí)例來(lái)討論 make 命令背后的工作機(jī)制。 

Make 如何工作的 

對(duì)于不知道背后機(jī)理的人來(lái)說(shuō),make 命令像命令行參數(shù)一樣接收目標(biāo)。這些目標(biāo)通常存放在以 “Makefile” 來(lái)命名的特殊文件中,同時(shí)文件也包含與目標(biāo)相對(duì)應(yīng)的操作。更多信息,閱讀關(guān)于 Makefiles 如何工作的系列文章。 

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

現(xiàn)在,假設(shè)你對(duì)某個(gè)源文件進(jìn)行了修改,你再次執(zhí)行 make 命令,它將只編譯與該源文件相關(guān)的目標(biāo)文件,因此,編譯完最終的可執(zhí)行文件節(jié)省了大量的時(shí)間。 

Make 命令實(shí)例 

下面是本文所使用的測(cè)試環(huán)境:


 OS —— Ubunut 13.04 
Shell —— Bash 4.2.45 
Application —— GNU Make 3.81 
下面是工程的內(nèi)容: 

$ ls 
anotherTest.c Makefile test.c test.h 
下面是 Makefile 的內(nèi)容:

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 
現(xiàn)在我們來(lái)看 Linux 下一些 make 命令應(yīng)用的實(shí)例: 

1. 一個(gè)簡(jiǎn)單的例子 

為了編譯整個(gè)工程,你可以簡(jiǎn)單的使用 make 或者在 make 命令后帶上目標(biāo) all。


$ make 
gcc -c -Wall test.c  
gcc -c -Wall anotherTest.c  
gcc -Wall test.o anotherTest.o -o test 
你能看到 make 命令第一次創(chuàng)建的依賴以及實(shí)際的目標(biāo)。 

如果你再次查看目錄內(nèi)容,里面多了一些 .o 文件和執(zhí)行文件:


$ ls 
anotherTest.c anotherTest.o Makefile test test.c test.h test.o 
現(xiàn)在,假設(shè)你對(duì) test.c 文件做了一些修改,重新使用 make 編譯工程:


 $ make 
gcc -c -Wall test.c  
gcc -Wall test.o anotherTest.o -o test 
你可以看到只有 test.o 重新編譯了,然而另一個(gè) Test.o 沒(méi)有重新編譯。 

現(xiàn)在清理所有的目標(biāo)文件和可執(zhí)行文件 test,你可以使用目標(biāo) clean:

$ make clean 
rm -rf *.o test  
$ lsanotherTest.c Makefile test.c test.h 
你可以看到所有的 .o 文件和執(zhí)行文件 test 都被刪除了。 

2. 通過(guò) -B 選項(xiàng)讓所有目標(biāo)總是重新建立 

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

下面是個(gè)例子:

 $ makemake: 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 命令不會(huì)編譯任何文件,然而 make -B 會(huì)強(qiáng)制編譯所有的目標(biāo)文件以及最終的執(zhí)行文件。 

3. 使用 -d 選項(xiàng)打印調(diào)試信息 

如果你想知道 make 執(zhí)行時(shí)實(shí)際做了什么,使用 -d 選項(xiàng)。 

這是一個(gè)例子:

 $ 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-- 
這是很長(zhǎng)的輸出,你也看到我使用了 more 命令來(lái)一頁(yè)一頁(yè)顯示輸出。 

4. 使用 -C 選項(xiàng)改變目錄 

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

這是一個(gè)目錄,假設(shè)你就在當(dāng)前目錄下:

$ ls 
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt 
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt 
但是你想運(yùn)行的 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 命令首先切到特定的目錄下,在那執(zhí)行,然后再切換回來(lái)。 

5. 通過(guò) -f 選項(xiàng)將其它文件看作 Makefile 

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

 make -f my_makefile 
通過(guò)這種方法,make 命令會(huì)選擇掃描 my_makefile 來(lái)代替 Makefile。


關(guān)鍵字:Linux 、Make、命令
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站