<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內(nèi)心的非常平靜!瞬間清空所有的雜念,達(dá)到物我兩忘!

        博客園  :: 首頁  ::  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
       
      介紹
       
        一般程序都是由多個源文件編譯鏈接而成的,這些源文件的處理步驟通常由Makefile文件管理。

       

       
      索引
       
      1、用途
         1)準(zhǔn)備
         2)方便使用
         3)原理
         4)格式
         5)案例
        1)作用
        2)語法
        3)案例
       
      用途
       
        make工具用來進(jìn)行協(xié)調(diào)的工具,可以根據(jù)程序模塊的修改情況重新編譯鏈接目標(biāo)代碼,以保證目標(biāo)代碼總是由它的最新模塊組成。

       
      準(zhǔn)備:
        
        要使用make,準(zhǔn)備Makefile的文件(也可以準(zhǔn)備其他文件如GNUMakefile或makefile,推薦使用Makefile),它描述了軟件包中各個文件之間的關(guān)系,提供了更新每個文件的命令。
       
      方便使用:
        當(dāng)一個適當(dāng)?shù)腗akefile存在時,每次改變某些源文件,用簡單的shell命令(make),將足以完成所有必需的重新編譯。
       
      原理:
        make 程序利用Makefile的數(shù)據(jù)和每個文件最新一次更改的時間來確定哪些文件需要更新;對每個需要更新的文件,make程序使用Makefile中定義的命令來更新它。
       
      格式:
       
      #用“井”號表明注釋。
      target(要生成的文件): dependencies(被依賴的文件)
              #命令前面用的是“tab”而非空格。誤用空格是初學(xué)者容易犯的錯誤!
              命令1
              命令2
              命令3
                .
                .
                .
              命令n
      #可以使用“\”表示續(xù)行。注意,“\”之后不能有空格!

      • target通常是我們要生成的文件的名字,擺放的順序不重要,但第一個target是默認(rèn)的target。當(dāng)make不帶參數(shù)時,自動執(zhí)行第一個target。target也可以是要求make完成的動作,執(zhí)行這種target后并不能得到和target同名的文件,因此,也稱為偽target(phony target)。
      • dependencies是生成target所需的文件名列表。依賴可以為空,常用的“clean”target就常常沒有依賴,只有命令。
      • 命令可以是任何一個shell能運(yùn)行的命令。
       
      案例:
       

      比如生成exe文件,它由2個目標(biāo)代碼某塊組成,分別為module1.o和module2.o
       
      module1.h文件
      int module1 = 1;

      module1.c文件

      #include "module1.h"
      
      void print1(){
          printf("var module1:%d\n", module1);
      }

                                        

      module2.h文件

      int module2 = 2;

      module2.c文件

      #include <stdio.h>
      #include "module2.h"
      
      void print2(){
          printf("var module2:%d\n", module2);
      }
      
      int main(){
          print1();
          print2();
          return 0;
      }
                                         編譯
      Makefile文件
      exe:module2.o module1.o
          gcc -g module1.o module2.o  -o exe
      module2.o:module2.h module2.c
          gcc -g -c module2.c
      module1.o:module1.h module1.c
          gcc -g -c module1.c
      clean:
          rm -f exe *.o

                                        截圖

       

       

       
      規(guī)則
       
        在編寫完源程序文件后,從中生成需要的Makefile規(guī)則。
       
        最基本的編寫規(guī)則的方法是從最終的源程序文件開始一個一個的查看源碼文件,把它們要生成的目標(biāo)文件做為目標(biāo),而C語言源碼文件和源碼文件包含的頭文件作為依賴文件生成規(guī)則。
       
        目標(biāo)和條件之間的關(guān)系是:欲更新目標(biāo),必須首先更新它的所有條件;所有條件中只要有一個條件被更新了,目標(biāo)也必須隨之被更新。所謂“更新”就是執(zhí)行一遍規(guī)則中的命令列表,命令列表中的每條命令必須以一個Tab開頭,注意不能是空格,Makefile的格式不像C語言的縮進(jìn)那么隨意,對于Makefile中的每個以Tab開頭的命令,make會創(chuàng)建一個Shell進(jìn)程去執(zhí)行它。
        
       
       
      Makefile中的變量
       
        Makefile中變量就像一個環(huán)境變量。事實(shí)上環(huán)境變量在make中也被解釋成make的變量。
       
      作用:
        保存文件名列表。——可以方便地加入新的目標(biāo)文件而且不易出錯。
        保存編譯器參數(shù)。——在很多源代碼編譯時,gcc需要很長的參數(shù)選項(xiàng),在很多情況下,所有的編譯命令使用一組相同的選項(xiàng),如果把這組選項(xiàng)使用一個變量表示,那么可以把這個變量放在所有引用編譯器的地方。(當(dāng)要改變選項(xiàng)的時候,只需改變一次這個變量內(nèi)容即可)
       
      語法:
       
      變量:“變量”指的是用一個字符串代替另一個字符串的功能。在makefile中可以使用“=”號來定義變量,使用“$(變量名)”來使用變量;還可以用“:=”追加變量的內(nèi)容。習(xí)慣上,變量名使用大寫。
       
      定義: 
        變量名=字符串
      使用:
        $(變量名)
      追加:
        變量名:=字符串
       
       
       
      案例:進(jìn)化上面的Makefile
       
      OBJS=module1.o module2.o
      C=-c
      CC=gcc
      exe:$(OBJS)
          $(CC) -g $(OBJS)  -o exe
      module2.o:module2.h module2.c
          $(CC) -g $(C) module2.c
      module1.o:module1.h module1.c
          $(CC) -g $(C) module1.c
      clean:
          rm -f exe *.o

       

       
      偽目標(biāo)
       
         首先要明確,并不是所有的目標(biāo)文件都對應(yīng)于磁盤文件,有的目標(biāo)文件的存在只是為了形成一條規(guī)則,從而使make完成特定的工作,并不生成新的目標(biāo)文件,這樣的目標(biāo)稱為偽目標(biāo)。——如上面Makefile中的clean。常用的還有all。
       
      放例子:
      all:exe1 exe2 
      exe1:exe1.c exe1.h
          gcc exe1.c -o exe1
      exe2:exe2.c exe2.h
          gcc exe2.c -o exe2
      clean:
          rm -f exe*

        其中的all和clean都為偽目標(biāo)。偽目標(biāo)文件是不存在的。注意上面例子中第一條規(guī)則下的命令行為空,make不會執(zhí)行任何動作,只是檢查依賴文件的更新情況, 掃描剩下的幾條規(guī)則并執(zhí)行相應(yīng)的編譯命令生成可執(zhí)行文件。

       
       
      條件語句
       
        條件語句可以將一個變量與其他變量的值進(jìn)行比較,或?qū)⒁粋€變量與一個字符串常量相比較。——這樣就可以根據(jù)變量的值執(zhí)行或忽略Makefile文件中的一部分腳本。
       
        注意:條件語句用于控制make時間看見的Makefile文件部分,而不能用于執(zhí)行時控制shell命令。
       
        條件語句3條指令:ifeq, else 和endif
       
      放樣例:
      ifeq($(VAR), 1)
          gcc -o exe1 module
      else
          gcc -o exe2 module
      endif
       
      調(diào)試make
       
        我們在很多語言中都要用到調(diào)試,那么我們自然對make也要想到調(diào)試了。
       
        make的調(diào)試很簡單,只需通過-d選項(xiàng)可是make在執(zhí)行命令時打印調(diào)試信息。
        這些信息包括:
          1、make重新編譯時需要檢查的文件
          2、哪些文件被比較以及比較的結(jié)果
          3、需要重新生成的文件
          4、make將要使用的隱含規(guī)則
          5、make實(shí)際執(zhí)行的隱含規(guī)則和命令
       
        放截圖樣例(一部分)

       
      參考文獻(xiàn)
         
       
      總結(jié)
         
        想要熟練地掌握make工具,必需通過不斷的練習(xí)并參考其他Makefile的例子。
       
        我會在后期的開發(fā)學(xué)習(xí)中不斷完善這篇博文。
       
      推薦
       
       
      posted on 2012-07-11 17:38  川山甲  閱讀(8064)  評論(7)    收藏  舉報
      主站蜘蛛池模板: 性欧美三级在线观看| 成人免费A级毛片无码片2022| 爽爽精品dvd蜜桃成熟时电影院| 久热re这里精品视频在线6 | 亚洲色欲色欲天天天www| 岛国岛国免费v片在线观看| 国产午夜一区二区在线观看| 亚洲深深色噜噜狠狠网站| 久久狠狠高潮亚洲精品夜色| 亚洲国产欧美在线人成AAAA| 这里只有精品在线播放| 国产综合av一区二区三区| 亚洲熟妇自偷自拍另类| 亚洲av无码之国产精品网址蜜芽| 国产精自产拍久久久久久蜜| 青草青草久热精品视频在线播放| 宕昌县| 亚洲老女人区一区二视频| 中文字幕无线码免费人妻| 后入内射无码人妻一区| 天堂中文8资源在线8| 国产精品成人久久电影| 国模冰莲自慰肥美胞极品人体图| 人妻少妇精品视频专区| 免费看成人毛片无码视频| 午夜成人性爽爽免费视频| 国产成人精品a视频| 囯产精品久久久久久久久久妞妞| 久久丁香五月天综合网| 色猫咪av在线网址| 曰本丰满熟妇xxxx性| 久99久热这里只有精品| 亚洲色大成网站WWW久久| 激情国产一区二区三区四| 国产成人av免费观看| 亚洲一本大道在线| 无码国内精品久久人妻蜜桃| 好湿好紧太硬了我太爽了视频| 亚洲性日韩一区二区三区| jlzz大jlzz大全免费| 午夜片神马影院福利|