• <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 閱讀(2404) 評論(0)  編輯 收藏 引用 所屬分類: makefile
            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(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

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            青青草国产精品久久久久| 国产精品久久久久久久久久免费| 91麻豆精品国产91久久久久久| 99精品久久久久久久婷婷| 久久久久国产视频电影| 久久精品亚洲一区二区三区浴池 | 久久久久噜噜噜亚洲熟女综合| 精品久久久久久无码免费| 色妞色综合久久夜夜| 国产精品美女久久久久网| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 91精品国产色综合久久| 一本久久a久久精品综合香蕉| 国产精品久久久久影院色| 一本久久精品一区二区| 久久国产成人亚洲精品影院| 久久亚洲欧美国产精品| 久久午夜福利无码1000合集| 99久久精品无码一区二区毛片| 久久w5ww成w人免费| 久久久久久综合网天天| 久久福利片| 精品国产婷婷久久久| 草草久久久无码国产专区| 国产精品女同久久久久电影院| 久久这里都是精品| 亚洲精品高清一二区久久| 久久精品无码一区二区三区日韩 | 久久99久久99小草精品免视看| 午夜久久久久久禁播电影| 久久亚洲中文字幕精品一区| 久久综合成人网| 欧美精品福利视频一区二区三区久久久精品| 国产精品99久久99久久久| 欧美喷潮久久久XXXXx| 久久人爽人人爽人人片AV | 久久久久久九九99精品| 久久精品人人槡人妻人人玩AV | 精品久久一区二区| 亚洲国产天堂久久综合网站| 9191精品国产免费久久|