ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          實例代碼:
          /*
          *  hello.c - Canonical "Hello, World!" program
          */
          #include <stdio.h>
          int main(void)
          {
            printf("Hello,Linux programming world!\n");
            return 0;
          }
          在命令行上鍵入以下命令編譯和運行這段程序:
          $gcc hello.c -o hello
          $./hello
          Hello, Linux programming world!
          第一行命令告訴gcc對源代碼hello.c進行編譯和鏈接,并使用-o參數指定創建名為hello的可見程序.第二行命令執行hello這個程序,第三行是程序的執行結果.

          其實,gcc首先運行預處理程序cpp來展開hello.c中的宏并在其中插入#include文件所包含的內容:然后把預處理后的源代碼編譯成為目標代碼;最后,鏈接程序ld創建一個名為hello的二進制文件.

          現在我們來通過手工操作重新創建這些步驟,以逐步執行編譯過程.第一布是運行預處理器.使用-E選項告訴gcc在預處理后停止編譯過程:
          $gcc -E hello.c -o hello.cpp
          此時查看hello.cpp會發現stdio.h的內容確實都插到文件里去了,而其他應當被預處理的標記也做了類似處理.
          下一步是將hello.cpp編譯為目標代碼.可使用gcc的-c選項來完成:
          $gcc -x cpp-output -c hello.cpp -o hello.o
          -x選項告訴gcc從指定的步驟開始編譯,在本例中也就是編譯器處理后的源代碼(cpp-output).
          gcc是怎么知道如何處理某種特殊類型的文件呢?它是依靠文件的擴展名來決定如何正確處理該文件的.
          ——————————————————————————————
          擴展名                       類型
          .c                            C語言源代碼
          .C,.cc                       C++語言源代碼
          .i                            預處理后的C源代碼
          .ii                         預處理后的C++源代碼
          .S,.s                       匯編語言源代碼
          .o                            編譯后的目標代碼
          .a,.so                       編譯后的庫代碼
          ———————————————————————————————
          最后,鏈接目標文件,生成二進制代碼.
          $gcc hello.c -o hello
          posted on 2005-08-04 22:01 ivaneeo 閱讀(5944) 評論(0)  編輯  收藏 所屬分類: gcc小試牛力
          主站蜘蛛池模板: 阳朔县| 枣强县| 武汉市| 景泰县| 新绛县| 岳阳县| 江山市| 宜章县| 镇康县| 津南区| 盱眙县| 浦东新区| 奉贤区| 山东省| 利津县| 德清县| 邯郸市| 紫云| 金阳县| 汉寿县| 阿拉善盟| 格尔木市| 仁布县| 洛宁县| 龙井市| 贵阳市| 枞阳县| 日喀则市| 滨州市| 探索| 广东省| 永宁县| 九台市| 应城市| 哈密市| 香河县| 岳阳县| 瓮安县| 云南省| 镇巴县| 乳源|