• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            Makefile的編寫     
              假設(shè)我們有下面這樣的一個(gè)程序,源代碼如下:     
                
              /*   main.c   */     
              #include   "mytool1.h"     
              #include   "mytool2.h"     
                
              int   main(int   argc,char   **argv)     
              {     
              mytool1_print("hello");     
              mytool2_print("hello");     
              }     
                
              /*   mytool1.h   */     
              #ifndef   _MYTOOL_1_H     
              #define   _MYTOOL_1_H     
                
              void   mytool1_print(char   *print_str);     
                
              #endif     
                
              /*   mytool1.c   */     
              #include   "mytool1.h"     
              void   mytool1_print(char   *print_str)     
              {     
              printf("This   is   mytool1   print   %s\n",print_str);     
              }     
                
              /*   mytool2.h   */     
              #ifndef   _MYTOOL_2_H     
              #define   _MYTOOL_2_H     
                
              void   mytool2_print(char   *print_str);     
                
              #endif     
                
              /*   mytool2.c   */     
              #include   "mytool2.h"     
              void   mytool2_print(char   *print_str)     
              {     
              printf("This   is   mytool2   print   %s\n",print_str);     
              }     

            ============================================
            Makefile的文件是:  
            [gping@localhost gp]$ vi Makefile(回車, 編輯器)
               
              #   這是上面那個(gè)程序的Makefile文件     
              main:main.o   mytool1.o   mytool2.o     
            # 下面一行一定要加TAB鍵
                        gcc   -o   main   main.o   mytool1.o   mytool2.o    
              main.o:main.c   mytool1.h   mytool2.h     
                       gcc   -c   main.c     
              mytool1.o:mytool1.c   mytool1.h     
                       gcc   -c   mytool1.c     
              mytool2.o:mytool2.c   mytool2.h     
                       gcc   -c   mytool2.c     



            [gping@localhost gp]$ make 
            gcc   -c   main.c     
            gcc   -o   main   main.o   mytool1.o   mytool2.o     
            [gping@localhost gp]$ ./main 
            This   is   mytool1   print   hello
            This   is   mytool2   print   hello










            1.源程序的編譯     
              在Linux下面,如果要編譯一個(gè)C語言源程序,我們要使用GNU的gcc編譯器.   下面我們以一個(gè)實(shí)例來說明如何使用gcc編譯器.     
              假設(shè)我們有下面一個(gè)非常簡單的源程序(hello.c):     
              int   main(int   argc,char   **argv)     
              {     
              printf("Hello   Linux\n");     
              }     
                
              要編譯這個(gè)程序,我們只要在命令行下執(zhí)行:     
              gcc   -o   hello   hello.c     
              gcc   編譯器就會(huì)為我們生成一個(gè)hello的可執(zhí)行文件.執(zhí)行./hello就可以看到程序的輸出結(jié)果了.命令行中   gcc表示我們是用gcc來編譯我們的源程序,-o   選項(xiàng)表示我們要求編譯器給我們輸出的可執(zhí)行文件名為hello   而hello.c是我們的源程序文件.     
              gcc編譯器有許多選項(xiàng),一般來說我們只要知道其中的幾個(gè)就夠了.   -o選項(xiàng)我們已經(jīng)知道了,表示我們要求輸出的可執(zhí)行文件名.   -c選項(xiàng)表示我們只要求編譯器輸出目標(biāo)代碼,而不必要輸出可執(zhí)行文件.   -g選項(xiàng)表示我們要求編譯器在編譯的時(shí)候提供我們以后對(duì)程序進(jìn)行調(diào)試的信息.     
              知道了這三個(gè)選項(xiàng),我們就可以編譯我們自己所寫的簡單的源程序了,如果你想要知道更多的選項(xiàng),可以查看gcc的幫助文檔,那里有著許多對(duì)其它選項(xiàng)的詳細(xì)說明.     
              2.Makefile的編寫     
              假設(shè)我們有下面這樣的一個(gè)程序,源代碼如下:     
                
              /*   main.c   */     
              #include   "mytool1.h"     
              #include   "mytool2.h"     
                
              int   main(int   argc,char   **argv)     
              {     
              mytool1_print("hello");     
              mytool2_print("hello");     
              }     
                
              /*   mytool1.h   */     
              #ifndef   _MYTOOL_1_H     
              #define   _MYTOOL_1_H     
                
              void   mytool1_print(char   *print_str);     
                
              #endif     
                
              /*   mytool1.c   */     
              #include   "mytool1.h"     
              void   mytool1_print(char   *print_str)     
              {     
              printf("This   is   mytool1   print   %s\n",print_str);     
              }     
                
              /*   mytool2.h   */     
              #ifndef   _MYTOOL_2_H     
              #define   _MYTOOL_2_H     
                
              void   mytool2_print(char   *print_str);     
                
              #endif     
                
              /*   mytool2.c   */     
              #include   "mytool2.h"     
              void   mytool2_print(char   *print_str)     
              {     
              printf("This   is   mytool2   print   %s\n",print_str);     
              }     
                
                
              當(dāng)然由于這個(gè)程序是很短的我們可以這樣來編譯     
              gcc   -c   main.c     
              gcc   -c   mytool1.c     
              gcc   -c   mytool2.c     
              gcc   -o   main   main.o   mytool1.o   mytool2.o     
              這樣的話我們也可以產(chǎn)生main程序,而且也不時(shí)很麻煩.但是如果我們考慮一下如果有一天我們修改了其中的一個(gè)文件(比如說mytool1.c)那么我們 難道還要重新輸入上面的命令?也許你會(huì)說,這個(gè)很容易解決啊,我寫一個(gè)SHELL腳本,讓她幫我去完成不就可以了.是的對(duì)于這個(gè)程序來說,是可以起到作用 的.但是當(dāng)我們把事情想的更復(fù)雜一點(diǎn),如果我們的程序有幾百個(gè)源程序的時(shí)候,難道也要編譯器重新一個(gè)一個(gè)的去編譯?     
              為此,聰明的程序員們想出了一個(gè)很好的工具來做這件事情,這就是make.我們只要執(zhí)行以下make,就可以把上面的問題解決掉.在我們執(zhí)行make之 前,我們要先編寫一個(gè)非常重要的文件.--Makefile.對(duì)于上面的那個(gè)程序來說,可能的一個(gè)Makefile的文件是:     
              #   這是上面那個(gè)程序的Makefile文件     
              main:main.o   mytool1.o   mytool2.o  &nb

            原文地址:http://www.cnblogs.com/tankzhouqiang/archive/2010/03/07/1968345.html
            posted on 2012-06-19 11:39 風(fēng)輕云淡 閱讀(660) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux
            久久久久亚洲精品日久生情| 99热成人精品热久久669| 久久人人爽人人人人爽AV | 久久婷婷久久一区二区三区| 久久精品国产91久久综合麻豆自制 | 超级碰久久免费公开视频| 久久久无码精品午夜| 无码国内精品久久人妻| 亚洲国产成人久久综合野外| 蜜臀av性久久久久蜜臀aⅴ| 久久亚洲av无码精品浪潮| 91精品国产高清91久久久久久| 日本精品久久久久影院日本 | 国产精品青草久久久久福利99 | 久久97久久97精品免视看秋霞| 精品久久久久成人码免费动漫| 99久久精品国产毛片| 亚洲精品国产字幕久久不卡| 久久人人爽人爽人人爽av| 66精品综合久久久久久久| 国内精品久久久久久99| 精品久久久中文字幕人妻| 亚洲欧美国产精品专区久久| 国产日韩欧美久久| 亚洲狠狠久久综合一区77777 | 思思久久99热只有频精品66| 精品久久久无码中文字幕天天| 青青青青久久精品国产 | 久久黄视频| 久久香蕉综合色一综合色88| 69SEX久久精品国产麻豆| 波多野结衣中文字幕久久| 久久99热只有频精品8| 久久青青草原精品国产软件| 久久国产精品免费一区二区三区| AV色综合久久天堂AV色综合在| 国产精品9999久久久久| 99999久久久久久亚洲| 日韩一区二区久久久久久| 国产精品久久久久久久午夜片 | 久久久久久亚洲精品不卡|