偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

全面解析Linux Make規(guī)則

運(yùn)維 系統(tǒng)運(yùn)維
隨著Linux的深入了解,我們知道為什么Linux會(huì)趕上微軟。在當(dāng)今社會(huì)Linux越來(lái)越成為主流,本文為你詳細(xì)介紹Linux Make規(guī)則,為你在學(xué)習(xí)Linux Make規(guī)則時(shí)起一定的作用。這是一段在Makefile中常見的規(guī)則 。

隨著Linux的深入了解,我們知道為什么Linux會(huì)趕上微軟。在當(dāng)今社會(huì)Linux越來(lái)越成為主流,本文為你詳細(xì)介紹Linux Make規(guī)則,為你在學(xué)習(xí)Linux Make規(guī)則時(shí)起一定的作用。這是一段在Makefile中常見的規(guī)則 。

  1. clean:   
  2. rm -r core *.o *.a tmp_make   
  3. for i in *.c; do rm -f `basename $$i .c`.s; done   
  4. (cd chr_drv; make clean)   
  5. (cd blk_drv; make clean)   
  6. (cd math; make clean)  

第一句的 rm -f core *. *.a tmp_make 作用只是刪除文件,意思直白,沒(méi)什么好說(shuō)的。

第二句 for 循環(huán)遍歷目錄下所有的文件,將所有后綴名為.c文件名依次賦給i。然后執(zhí)行do語(yǔ)句,當(dāng)符合循環(huán)結(jié)束是執(zhí)行done??梢哉f(shuō)這里的for和shell里for語(yǔ)法是如此貌似。

我們可以來(lái)做個(gè)實(shí)驗(yàn)來(lái)驗(yàn)證一下:

  1. $ mkdir test #建立個(gè)實(shí)驗(yàn)用的目錄   
  2. $ cd test   
  3. $ touch a.x #建幾個(gè)實(shí)驗(yàn)用的文件   
  4. $ touch b.x   
  5. $ touch yy.x   
  6. $ vi Makefile #寫個(gè)實(shí)驗(yàn)?zāi)_本  

在文件中寫入:

clean:
for i in *.x; do echo $$i; done

寫好后,保存退出。運(yùn)行命令:

$ make

隨后可看到輸出的結(jié)果:

  1. for i in *.x;do echo $i;done   
  2. a.x   
  3. b.x   
  4. yy.x  

看到結(jié)果,for語(yǔ)句實(shí)現(xiàn)的功能就很清楚了。

對(duì)于結(jié)果,有一個(gè)怪異的就是,原來(lái)腳本中的$$i,在輸出是就變成了$i。這時(shí)的for是不是就是一樣了?,F(xiàn)在可以先做個(gè)結(jié)論,make處理腳本可shell處理腳本幾乎雷同,只是個(gè)別情況下要做變通。make會(huì)對(duì)$x進(jìn)行擴(kuò)展。比如:

  1. ec=echo   
  2. test:   
  3. $(ec) 'ddd'  

就可以在屏幕上看到輸出:

  1. echo 'ddd'   
  2. ddd  

所以應(yīng)該是make對(duì)Makefile進(jìn)行處理,將其變成shell可執(zhí)行的腳本,最后由shell解釋器來(lái)執(zhí)行有make翻譯過(guò)的腳本。并且是翻譯一句然后shell執(zhí)行一句,對(duì)于這個(gè)可以再做個(gè)驗(yàn)證。

  1. e =echo   
  2. prt=ls   
  3. clean:   
  4. $(prt)   
  5. for i in *.x;do $e $$i;done  

其輸出為:

  1. ls   
  2. a.sh a.x b.x Makefile yy.x   
  3. for i in *.x;do echo $i;done   
  4. a.x   
  5. b.x   
  6. yy.x  

可以看到,$(prt)被擴(kuò)展后就立即執(zhí)行了。后面的for也是這樣。

到這里開篇的那個(gè)例子算是解析完畢了。下面在看看Makefile中的規(guī)則定義,在make中的規(guī)則分為兩種,一種是顯示規(guī)則,另一種無(wú)可爭(zhēng)議的就是隱含規(guī)則了。

顯示規(guī)則,定義如下

目標(biāo)文件 : 依賴文件

生成目標(biāo)文件的規(guī)則

隱含規(guī)則

.源文件擴(kuò)展名.目標(biāo)文件擴(kuò)展名:

生成目標(biāo)文件的規(guī)則

在使用隱含規(guī)則時(shí)要使用一些內(nèi)定宏來(lái)指定文件名:

$@ 全路徑的目標(biāo)文件

$* 去除擴(kuò)張名的全路徑的目標(biāo)文件

$? 所有源文件名

$< 源文件名

以上就是Linux Make規(guī)則的知識(shí)。

【編輯推薦】

  1. 讓你應(yīng)用Linux操作系統(tǒng)加速遠(yuǎn)程登錄
  2. 輕松解決Linux系統(tǒng)grub錯(cuò)誤
  3. 深入淺出的了解Linux rescue
  4. 詳解Linux中Load average負(fù)載
  5. Linux中的slab分配器講解
責(zé)任編輯:小霞 來(lái)源: JavaEye博客
相關(guān)推薦

2010-08-31 11:04:48

CSS優(yōu)先級(jí)

2010-03-09 17:19:01

Linux時(shí)鐘

2010-03-08 17:27:56

Linux profi

2010-01-06 17:12:57

Linux主要構(gòu)成

2010-03-10 16:59:59

Linux數(shù)字文件權(quán)限

2010-03-09 14:59:02

Linux ifcon

2010-03-09 14:45:48

Linux ifcon

2009-12-24 14:02:57

Linux集群技術(shù)

2009-12-01 18:58:18

Suse Linux

2010-03-09 17:45:11

Linux計(jì)劃任務(wù)

2017-04-10 18:34:16

AndroidNotificatio

2010-03-09 13:10:08

Linux特殊用戶權(quán)限

2012-02-13 17:26:35

2010-03-10 17:18:17

Linux磁盤陣列

2025-06-27 07:19:48

2025-05-19 00:00:55

2010-06-24 15:35:04

IPx協(xié)議

2010-07-22 09:25:09

telnet命令

2024-08-29 08:28:17

2019-04-04 13:00:19

Linuxshell命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)