• <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>

            Linux下C/C++學習1

                  在Linux 下面,如果要編譯一個C 語言源程序,我們要使用GNU 的gcc 編譯器。下面
            我們以一個實例來說明如何使用gcc 編譯器。假設我們有下面一個非常簡單的源程序
            (hello.c):
            int main(int argc,char **argv)
            {
            printf("Hello Linux\n");
            }
            要編譯這個程序,我們只要在命令行下執行:
            gcc -o hello hello.c

            下面就詳細說一下gcc的編譯過程

            gcc由C語言源代碼文件生成可執行文件的過程,一般來說分為四個階段:預處理(也稱預編譯Preprocessing)、編譯(compilation)、匯編(Assembly)和鏈接(linking)。這四個階段分別由gcc調用不同的程序來實現。
             


            • 預處理是調用cpp程序來實現的,預處理主要是對包含語句、宏定義等進行處理。
            • 編譯是調用cc來實現的,它是源文件變為后綴為.o的目標文件的過程。
            • 匯編過程是對匯編語言的操作,通過調用as來實現,匯編同樣也生成目標文件。
            • 鏈接是通過用ld來實現的。這是最為關鍵的步驟,在該階段,ld會將各程序的執行代碼放置在程序的適合位置,同時,程序調用的庫函數也會以適當的方法設置調用接口。

                  gcc編譯時,如果在命令行沒有指定其他參數,則gcc會完成編譯、鏈接的過程,然后在當前目錄中生成一個名為a.out的可執行文件。一般來說,linux并不依賴文件的后綴來識別文件是否為可執行程序,其判斷文件是否可執行依據的是文件的屬性。如果對于當前用戶而言,文件有運行權限,則該文件為一個可執行程序。
                  對于gcc而言,判斷文件的類型主要是依據文件的后綴名。所以,要使用gcc編譯代碼,正確使用文件后綴是保證編譯正確的前提。如果寫了一個C++代碼,卻使用了.c為后綴,gcc在編譯該文件時會將該文件按照C語言代碼來處理,一般會出錯。




                  一些gcc常用的文件后綴名:

            • c: C語言源代碼文件
            • a:由目標文件構成的檔案庫文件
            • .C、.cc 或.cxx:c++源代碼文件
            • h:頭文件
            • i:經過預處理的C源代碼文件
            • ii:經過預處理的C++源代碼文件
            • m:Objective-C源代碼文件
            • o:編譯后的目標文件
            • s:匯編語言源代碼文件
            • S:經過預編譯的匯編語言源代碼文件

              gcc hello.c編譯通過后,就可以簡單的使用a.out調用該程序,使用命令如下:./a.out
            • 注意:這里不能直接使用a.out來調用該程序,因為shell在尋找可執行程序時,并不在當前目錄中尋找,所以必須用“./”來顯示指定該文件的路徑是當前目錄

            posted on 2012-03-19 11:08 Daywei 閱讀(443) 評論(0)  編輯 收藏 引用 所屬分類: Linux

            <2013年4月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導航

            統計

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            文章檔案

            牛人博客

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久99国产精品一区二区| 亚洲Av无码国产情品久久| 欧美与黑人午夜性猛交久久久 | 91精品国产综合久久久久久| 亚洲国产小视频精品久久久三级| 国内精品久久久久久久涩爱| 一本久久a久久精品综合夜夜| 久久午夜电影网| 久久99亚洲综合精品首页| 国产农村妇女毛片精品久久| 国产亚州精品女人久久久久久| 久久er国产精品免费观看2| 国产精品九九九久久九九| 99久久99这里只有免费的精品| 国产精品久久久久久福利漫画 | 国产精品99久久久久久猫咪| 久久久91精品国产一区二区三区 | 人人狠狠综合久久88成人| 成人国内精品久久久久一区| 嫩草影院久久99| 伊人色综合久久天天网| 日产精品久久久一区二区| 久久精品国产99国产电影网 | 色播久久人人爽人人爽人人片aV | 99国产欧美精品久久久蜜芽 | 中文字幕无码精品亚洲资源网久久| 亚洲乱码精品久久久久..| 中文字幕久久欲求不满| 亚洲精品99久久久久中文字幕 | 无遮挡粉嫩小泬久久久久久久 | 久久91精品国产91久久小草| 国内精品久久久久久久涩爱| 亚洲欧洲中文日韩久久AV乱码| 蜜臀av性久久久久蜜臀aⅴ| 青青草原综合久久大伊人精品| 久久精品极品盛宴观看| 国产精品福利一区二区久久| 久久亚洲AV成人无码软件| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产69精品久久久久久人妻精品| 久久er热视频在这里精品|