在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Linux下C編程基礎(chǔ)之:make工程管理器

            Linux下C編程基礎(chǔ)之:make工程管理器

            作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏


            本文引用地址:http://www.biyoush.com/article/257149.htm

            為了避免上述問題,簡單擴展型變量的值在定義處展開,并且只展開一次,因此它不包含任何對其他變量的引用,從而消除變量的嵌套引用。

            遞歸展開方式的定義格式為:VAR=var。

            簡單擴展方式的定義格式為:VAR:=var。

            make中的變量使用均使用的格式為:$(VAR)。


            注意

            變量名是不包括“:”、“#”、“=”以及結(jié)尾空格的任何字符串。同時,變量名中包含字母、數(shù)字以及下劃線以外的情況應(yīng)盡量避免,因為它們可能在將來被賦予特別的含義。

            變量名是大小寫敏感的,例如變量名“foo”、“FOO”、和“Foo”代表不同的變量。

            推薦在makefile內(nèi)部使用小寫字母作為變量名,預(yù)留大寫字母作為控制隱含規(guī)則參數(shù)或用戶重載命令選項參數(shù)的變量名。


            下面給出了上例中用變量替換修改后的makefile,這里用OBJS代替kang.o和yul.o,用CC代替gcc,用CFLAGS代替“-Wall-O–g”。這樣在以后修改時,就可以只修改變量定義,而不需要修改下面的定義實體,從而大大簡化了makefile維護的工作量。

            經(jīng)變量替換后的makefile如下所示:


            OBJS=kang.oyul.o

            CC=gcc

            CFLAGS=-Wall-O-g

            david:$(OBJS)

            $(CC)$(OBJS)-odavid

            kang.o:kang.ckang.h

            $(CC)$(CFLAGS)-ckang.c-okang.o

            yul.o:yul.cyul.h

            $(CC)$(CFLAGS)-cyul.c-oyul.o


            可以看到,此處變量是以遞歸展開方式定義的。


            makefile中的變量分為用戶自定義變量、預(yù)定義變量、自動變量及環(huán)境變量。如上例中的OBJS就是用戶自定義變量,自定義變量的值由用戶自行設(shè)定,而預(yù)定義變量和自動變量為通常在makefile都會出現(xiàn)的變量,它們的一部分有默認(rèn)值,也就是常見的設(shè)定值,當(dāng)然用戶可以對其進行修改。


            預(yù)定義變量包含了常見編譯器、匯編器的名稱及其編譯選項。表3.15列出了makefile中常見預(yù)定義變量及其部分默認(rèn)值。

            表3.15 makefile中常見的預(yù)定義變量

            預(yù)定義變量

            含義

            AR

            庫文件維護程序的名稱,默認(rèn)值為ar

            AS

            匯編程序的名稱,默認(rèn)值為as

            CC

            C編譯器的名稱,默認(rèn)值為cc

            CPP

            C預(yù)編譯器的名稱,默認(rèn)值為$(CC)–E

            CXX

            C++編譯器的名稱,默認(rèn)值為g++

            FC

            Fortran編譯器的名稱,默認(rèn)值為f77

            RM

            文件刪除程序的名稱,默認(rèn)值為rm–f

            ARFLAGS

            庫文件維護程序的選項,無默認(rèn)值

            ASFLAGS

            匯編程序的選項,無默認(rèn)值

            CFLAGS

            C編譯器的選項,無默認(rèn)值

            CPPFLAGS

            C預(yù)編譯的選項,無默認(rèn)值

            CXXFLAGS

            C++編譯器的選項,無默認(rèn)值

            FFLAGS

            Fortran編譯器的選項,無默認(rèn)值


            可以看出,上例中的CC和CFLAGS是預(yù)定義變量,其中由于CC沒有采用默認(rèn)值,因此,需要把“CC=gcc”明確列出來。


            由于常見的gcc編譯語句中通常包含了目標(biāo)文件和依賴文件,而這些文件在makefile文件中目標(biāo)體所在行已經(jīng)有所體現(xiàn),因此,為了進一步簡化makefile的編寫,就引入了自動變量。自動變量通??梢源砭幾g語句中出現(xiàn)目標(biāo)文件和依賴文件等,并且具有本地含義(即下一語句中出現(xiàn)的相同變量代表的是下一語句的目標(biāo)文件和依賴文件)。表3.16列出了makefile中常見的自動變量。


            表3.16 makefile中常見的自動變量

            自動變量

            含義

            $*

            不包含擴展名的目標(biāo)文件名稱

            $+

            所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件

            $

            第一個依賴文件的名稱

            $?

            所有時間戳比目標(biāo)文件晚的依賴文件,并以空格分開

            $@

            目標(biāo)文件的完整名稱

            $^

            所有不重復(fù)的依賴文件,以空格分開

            $%

            如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱


            自動變量的書寫比較難記,但是在熟練了之后使用會非常方便,請讀者結(jié)合下例中的自動變量改寫的makefile進行記憶。


            OBJS=kang.oyul.o

            CC=gcc

            CFLAGS=-Wall-O-g

            david:$(OBJS)

            $(CC)$^-o$@

            kang.o:kang.ckang.h

            $(CC)$(CFLAGS)-c$-o$@

            yul.o:yul.cyul.h

            $(CC)$(CFLAGS)-c$-o$@


            另外,在makefile中還可以使用環(huán)境變量。使用環(huán)境變量的方法相對比較簡單,make在啟動時會自動讀取系統(tǒng)當(dāng)前已經(jīng)定義了的環(huán)境變量,并且會創(chuàng)建與之具有相同名稱和數(shù)值的變量。但是,如果用戶在makefile中定義了相同名稱的變量,那么用戶自定義變量將會覆蓋同名的環(huán)境變量。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            linux相關(guān)文章:linux教程




            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉