freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

uclinux下應用程序開發(fā)-文庫吧

2025-04-23 11:59 本頁面


【正文】 有的 make選項。 w 在處理 makefile 之前和之后,都顯示工作目錄。 通過命令行參數(shù)中的 target , 可指定make要編譯的目標,并且允許同時定義編譯多個目標,操作時按照從左向右的順序依次編譯 target選項中指定的目標文件。如果命令行中沒有指定目標,則系統(tǒng)默認 target指向描述文件中第一個目標文件。 make如何實現(xiàn)對源代碼的操作是通過一個被稱之為 makefile的文件來完成的,在下面的小節(jié)里,主要向讀者介紹一下makefile的相關(guān)知識 makefile基本結(jié)構(gòu) GNU Make 的主要工作是讀一個文本文件 makefile。makefile 是用 bash語言寫的, bash語言是很像 BASIC語言的一種命令解釋語言。這個文件里主要描述了有關(guān)哪些目標文件是從哪些依賴文件中產(chǎn)生的,是用何種命令來進行這個產(chǎn)生過程的。有了這些信息, make 會檢查磁盤的文件,如果目標文件的日期 (即該文件生成或最后修改的日期 )至少比它的一個依賴文件日期早的話, make 就會執(zhí)行相應的命令,以更新目標文件。 makefile一般被稱為 “ makefile”或 “ Makefile”。 還可以在 make 的命令行中指定別的文件名。如果沒有特別指定的話, make就會尋找 “ makefile”或 “ Makefile”, 所以為了簡單起見,建議讀者使用這兩名字。如果要使用其他文件作為 makefile, 則可利用類似下面的 make 命令選項指定 makefile 文件: $ make f makefilename 一個 makefile 主要含有一系列的規(guī)則 , 如下: 目標文件名 : 依賴文件名 (tab鍵 ) 命令 第一行稱之為規(guī)則,第二行是執(zhí)行規(guī)則的命令,必須要以 tab鍵開始。 下面舉一個簡單的 makefile的例子。 executable : gcc o executable : gcc Wall O g c o : gcc Wall O g c o 這是一個最簡單的 makefile, make從第一條規(guī)則開始, executable是 makefile最終要生成的目標文件。給出的規(guī)則說明 executable依賴于兩個目標文件 , 只要 executable 比它依賴的文件中的任何一個舊的話,下一行的命令就會被執(zhí)行。但是,在檢查文件 和 的日期之前,它會往下查找那些把 或 做為目標文件的規(guī)則。make先找到了關(guān)于 的規(guī)則,該目標文件的依賴文件是 。 makefile后面的文件中再也找不到生成這個依賴文件的規(guī)則了。此時, make開始檢查磁盤上這個依賴文件的日期,如果這個文件的日期比 日期新的話,那么這個規(guī)則下面的命令 gcc c –o 就會執(zhí)行,以更新文件 。 同樣 make對文件 做類似的檢查,它的依賴文件是 , 對 。 現(xiàn)在, 再回到第一個規(guī)則處,如果剛才兩個規(guī)則中的任何一個被執(zhí)行,最終的目標文件 executable都需要重建 (因為executable所依賴的其中一個 .o 文件就會比它新 ),因此鏈接命令就會被執(zhí)行。 有了 makefile, 對任何一個源文件進行修改后,所有依賴于該文件的目標文件都會被重新編譯 (因為 .o 文件依賴于 .c 文件 ),進而最終可執(zhí)行文件會被重新鏈接(因為它所依賴的 .o 文件被改變了 ),再也不用手工去一個個修改了。 編寫 Makefile Makefile 宏定義 makefile 里的宏是大小寫敏感的 , 一般都使用大寫字母 。 它們幾乎可以從任何地方被引用 , 可以代表很多類型 , 例如可以存儲文件名列表 , 存儲可執(zhí)行文件名和編譯器標志等 。 要定義一個宏 , 在 makefile中 , 任意一行的開始寫下該宏名 , 后面跟一個等號 , 等號后面是要設定的這個宏的值 。 如果以后要引用到該宏時 , 使用 $ (宏名 ), 或者是 ${宏名 }, 注意宏名一定要寫在圓或花括號之內(nèi) 。 把上一小節(jié)所舉的例子 , 用引入宏名的方法 , 可以寫成下面的形式: OBJS = CC = gcc CFLAGS = Wall O g executable: $(OBJS) $(CC) $(OBJS) o executable : $(CC) $(CFLAGS) c o : $(CC) $(CFLAGS) c o 在這個 makefile中引入了三個宏定義 , 所以如果當這些宏中的某些值發(fā)生變化時 , 開發(fā)者只需在要修改的宏處 , 將其宏值修改為要求的值即可 , makefile中用到這些宏的地方會自動變化 。 在 make中還有一些已經(jīng)定義好的內(nèi)部變量 , 有幾個較常用的變量是 $@, $ , $?, $*, $^ (注意:這些變量不需要括號括住 )。 $@ 擴展為當前規(guī)則的目標文件名; $ 擴展為當前規(guī)則依賴文件列表中的第一個依賴文件; $? 擴展為所有的修改日期比當前規(guī)則的目標文件的創(chuàng)建日期更晚的依賴文件 , 該值只有在使用顯式規(guī)則時才會被使用; $* 擴展成當前規(guī)則中目標文件和依賴文件共享的文件名 , 不含擴展名; $^ 擴展為整個依賴文件的列表 (除掉了所有重復的文件名 )。 利用這些變量 , 可以把上面的 makefile 寫成 : OBJS = CC = gcc CFLAGS = Wall O g executable: $(OBJS) $(CC) $^ o $@ : $(CC) $(CFLAGS) –c $ o $@ : $(CC) $(CFLAGS) c $ o $@ 可以將宏變量應用到其他許多地方,尤其是當把它們和函數(shù)混合使用的時候,正確使用宏,會給開發(fā)者帶來極大的便利 隱含規(guī)則 請注意,在上面的例子里,幾個產(chǎn)生 .o文件的命令都是以 .c 文件作為依賴文件產(chǎn)生 .o 目標 (obj)文件,這是一個標準的生成目標文件的步驟。如果把生成 的規(guī)則從 makefile中刪除, make 會查找它的隱含規(guī)則,然后會找到一個適當?shù)拿钊?zhí)行。實際上 make已經(jīng)知道該如何生成這些目標文件,它使用變量 CC 做為編譯器,并且傳遞宏 CFLAGS 給 C 編譯器 (CXXFLAGS用于 C++ 編譯器 ), CPPFLAGS(C預處理選項 ), TARGET_ARCH (就目前例子而言,還不用考慮這個宏 ),然后它加入開關(guān)選項 c , 后面跟預定義宏 $(第一個依賴文件名 ),最后是開關(guān)項 o, 后跟預定義宏 $@ (目標文件名 )。一個C編譯的具體命令將 會是: $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) c $ o $@ 在 make 工具中所包含的這些內(nèi)置的或隱含的規(guī)則 , 定義了如何從不同的依賴文件建立特定類型的目標 。 Unix系統(tǒng)通常支持一種基于文件擴展名即文件名后綴的隱含規(guī)則 。 這種后綴規(guī)則定義了如何將一個具有特定文件名后綴的文件 (例如 .c文件 ), 轉(zhuǎn)換成為具有另一種文件名后綴的文件 (例如 .o文件 ): 系統(tǒng)中默認的常用文件擴展名及其含義為: .o 目標文件 .c C源文件 .f FORTRAN源文件 .s 匯編源文件 .y YaccC源語法 .l Lex源語法 而 GNU make 除了支持后綴規(guī)則外還支持另一種類型的隱含規(guī)則即模式規(guī)則。這種規(guī)則更加通用,因為可以利用模式規(guī)則定義更加復雜的依賴性規(guī)則。同時可用來定義目標和依賴文件之間的關(guān)系,例如下面的模式規(guī)則定義了如何將
點擊復制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1