Linux學習筆記五:gcc程式編譯

來源:互聯網
上載者:User


Linux學習筆記五:gcc程式編譯 Linux下的gcc(GNU C Compiler)是由GNU推出的功能十分強大的平台編譯器,它可在多種硬體平台上編譯出可執行程式,對於gcc的學習與掌握非常必要,因為gcc將會伴隨我們整個的linux學習及開發過程。gcc可以降c,c++及組譯工具編譯連結成可執行檔檔案。需要注意的是在linux中可執行檔沒有統一的尾碼,系統是從檔案的屬性來區分的,這一點跟window下是大不一樣的。 那麼gcc的源檔案是否可以不管檔案的尾碼呢?答案是否定的,gcc是要通過尾碼來區別輸入檔案的類別的,如:.c, .a(由目標檔案構成的庫檔案),.C, .cc , .cxx(是C++原始碼檔案),.h(標頭檔),.i(已經預先處理過的C原始碼檔案), .ii(已預先處理過的c++原始碼檔案),.o(編譯後的目標檔案),.s(彙編原始碼檔案),.S(經過預彙編的彙編源檔案); gcc的編譯過程可以分為四個階段,即:預先處理,編譯,彙編,連結。  www.2cto.com        下面看一個簡單的例子:   gcc常用編譯選項:   1. -o(小o)    指定編譯後的可執行檔名,預設為 XXX.out    2.  -c           只編譯,不會進行串連的.o檔案,不可執行  3. -g         編譯出可調試的程式,即如果我們需要對程式進行調試,則編譯時間必須帶-g ,此時產生的檔案將會大很多  4. - O 及-O2   對編譯連結過程進行最佳化  5.-I(大i)    如-I/home/a  指定外加標頭檔目錄   其實也可把自己做的標頭檔直接放在  /usr/include/下  www.2cto.com   6.-L        指定庫所在路徑,跟-I原理一樣  7. -static       靜態連結    ,  即把庫整合到程式中合成一個可執行檔 ,相比於動態庫,則動態庫只會在運行時動態地調用函數庫。靜態連結浪費空間,動態連結耗時。預設採用動態連結,但只要編譯時間加上-static選項就會進行靜態連結。  8. -Wall :   產生所有警告資訊    而  -w 則不產生任何警告資訊   9. -D   相當於#define    進行宏定義。  如 gcc -DYES  hello.c -o hello   這裡定義了一個名為YES的宏  作者 stewen_001

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.