• <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>
            posts - 297,  comments - 15,  trackbacks - 0

            gcc/g++ 在執行編譯時,需要4步

              1.預處理,生成.i的文件[使用-E參數]

              2.將預處理后的文件不轉換成匯編語言,生成文件.s[使用-S參數]

              3.有匯編變為目標代碼(機器代碼)生成.o的文件[使用-c參數]

              4.連接目標代碼,生成可執行程序[使用-o參數]

            -x language filename

              設定文件所使用的語言,使后綴名無效,對以后的多個有效.也就是根據約定C語言的后綴名稱是.c的,而C++的后綴名是.C或者.cpp,如果你很個性,決定你的C代碼文件的后綴名是.pig 哈哈,那你就要用這個參數,這個參數對他后面的文件名都起作用,除非到了下一個參數的使用。

            -ansi

              關閉gnu c中與ansi c不兼容的特性,激活ansi c的專有特性(包括禁止一些asm inline typeof關鍵字,以及UNIX,vax等預處理宏,

            -fno-asm

              此選項實現ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字。

            -fno-strict-prototype

              只對g++起作用,使用這個選項,g++將對不帶參數的函數,都認為是沒有顯式的對參數的個數和類型說明,而不是沒有參數.而gcc無論是否使用這個參數,都將對沒有帶參數的函數,認為城沒有顯式說明的類型

            -fthis-is-varialble

              就是向傳統c++看齊,可以使用this當一般變量使用.

            -fcond-mismatch

              允許條件表達式的第二和第三參數類型不匹配,表達式的值將為void類型

              -funsigned-char

              -fno-signed-char

              -fsigned-char

              -fno-unsigned-char

              這四個參數是對char類型進行設置,決定將char類型設置成unsigned char(前兩個參數)或者 signed char(后兩個參數)

            -include file

              包含某個代碼,簡單來說,就是便以某個文件,需要另一個文件的時候,就可以用它設定,功能就相當于在代碼中使#include<filename>

              例子用法:

              gcc hello.c -include /root/pianopan.h

              -imacros file

              將file文件的宏,擴展到gcc/g++的輸入文件,宏定義本身并不出現在輸入文件中

              -Dmacro

              相當于C語言中的#define macro

              -Dmacro=defn

              相當于C語言中的#define macro=defn

              -Umacro

              相當于C語言中的#undef macro

              -undef

              取消對任何非標準宏的定義

              -Idir

              在你是用#include"file"的時候,gcc/g++會先在當前目錄查找你所制定的頭文件,如果沒有找到,他回到缺省的頭文件目錄找,如果使用-I制定了目錄,他回先在你所制定的目錄查找,然后再按常規的順序去找.對于#include<file>,gcc/g++會到-I制定的目錄查找,查找不到,然后將到系統的缺省的頭文件目錄查找

              -I-

              就是取消前一個參數的功能,所以一般在-Idir之后使用

              -idirafter dir

              在-I的目錄里面查找失敗,講到這個目錄里面查找.

              -iprefix prefix

              -iwithprefix dir

              一般一起使用,當-I的目錄查找失敗,會到prefix+dir下查找

              -nostdinc

              使編譯器不再系統缺省的頭文件目錄里面找頭文件,一般和-I聯合使用,明確限定頭文件的位置

              -nostdin C++

              規定不在g++指定的標準路經中搜索,但仍在其他路徑中搜索,.此選項在創建libg++庫使用

              -C

              在預處理的時候,不刪除注釋信息,一般和-E使用,有時候分析程序,用這個很方便的

              -M

              生成文件關聯的信息。包含目標文件所依賴的所有源代碼

              你可以用gcc -M hello.c來測試一下,很簡單。

              -MM

              和上面的那個一樣,但是它將忽略由#include<file>造成的依賴關系。

              -MD

              和-M相同,但是輸出將導入到.d的文件里面

              -MMD

              和-MM相同,但是輸出將導入到.d的文件里面

              -Wa,option

              此選項傳遞option給匯編程序;如果option中間有逗號,就將option分成多個選項,然后傳遞給會匯編程序

              -Wl.option

              此選項傳遞option給連接程序;如果option中間有逗號,就將option分成多個選項,然后傳遞給會連接程序.

              -llibrary

              制定編譯的時候使用的庫

              例子用法

              gcc -lcurses hello.c

              使用ncurses庫編譯程序

              -Ldir

              制定編譯的時候,搜索庫的路徑。比如你自己的庫,可以用它制定目錄,不然編譯器將只在標準庫的目錄找。這個dir就是目錄的名稱。

              -O0

              -O1

              -O2

              -O3

              編譯器的優化選項的4個級別,-O0表示沒有優化,-O1為缺省值,-O3優化級別最高

              -g

              只是編譯器,在編譯的時候,產生條是信息。

              -gstabs

              此選項以stabs格式聲稱調試信息,但是不包括gdb調試信息.

              -gstabs+

              此選項以stabs格式聲稱調試信息,并且包含僅供gdb使用的額外調試信息.

              -ggdb

              此選項將盡可能的生成gdb的可以使用的調試信息.

              -static

              此選項將禁止使用動態庫,所以,編譯出來的東西,一般都很大,也不需要什么動態連接庫,就可以運行.

              -share

              此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫.

              -traditional

              試圖讓編譯器支持傳統的C語言特性

            from:
            http://c.chinaitlab.com/ccjq/803616_2.html
            posted on 2010-03-19 09:23 chatler 閱讀(2386) 評論(0)  編輯 收藏 引用 所屬分類: makefile
            <2010年7月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲国产欧洲精品一| 嫩草影院久久99| 99久久99久久精品国产片果冻| 久久精品免费大片国产大片| 亚洲国产视频久久| 久久天天躁狠狠躁夜夜96流白浆| 久久综合九色综合欧美狠狠| 久久久久久国产a免费观看黄色大片 | 人妻无码中文久久久久专区| 久久国产精品久久久| 四虎影视久久久免费| 久久久久人妻一区二区三区vr| 久久精品?ⅴ无码中文字幕| 亚洲国产一成人久久精品| 国产成人精品久久一区二区三区av| 久久精品日日躁夜夜躁欧美| 国产精品欧美久久久久无广告| 国产麻豆精品久久一二三| 亚洲国产视频久久| 久久www免费人成精品香蕉| 久久久久免费看成人影片| 久久夜色精品国产噜噜亚洲a| 91超碰碰碰碰久久久久久综合| 久久九九精品99国产精品| 国产精品久久久久久久久软件| 99久久伊人精品综合观看| 久久久久99精品成人片欧美| 99久久香蕉国产线看观香| 久久人人爽人人爽AV片| 国产精品99久久久久久董美香| 久久这里只有精品久久| AAA级久久久精品无码片| 蜜臀久久99精品久久久久久小说 | 99久久99久久| 精品久久久久中文字幕日本| 久久亚洲精品国产精品| 久久久久久精品无码人妻| 一本久道久久综合狠狠躁AV | 久久99精品久久只有精品 | 香蕉久久影院| 免费无码国产欧美久久18|