gcc常用命令行

2021-05-24 12:04:34 字數 3359 閱讀 5334

gcc/g++在執行編譯工作的時候,總共需要以下幾步:

1.預處理,生成.i的檔案[預處理器cpp]

2.將預處理後的檔案轉換成組合語言,生成檔案.s[編譯器egcs]

3.有彙編變為目標**(機器**)生成.o的檔案[彙編器as]

4.連線目標**,生成可執行程式[鏈結器ld]

/**********gcc能夠處理的字尾有:**********/

a. *.c *.c (c語言)

b. *.cxx *.cc (c++語言)

c. *.m (物件導向的c)

d. *.i (預處理後的c語言原始檔)

e. *.ii (預處理後的c++語言原始檔)

f. *.s *.s (組合語言)

h. *.h (標頭檔案)

/**********目標檔案可以是:**********/

a. *.o 編譯連線後的目標檔案

b. *.a 庫檔案

-o file               指定輸出檔名,在編譯為目標**時,這一選項不是必須的。如果                        file沒有指定,預設檔名是a.out.

-c                    只編譯不鏈結

-idirname             將dirname加入到頭檔案的搜尋目錄列表中

-ldirname             將dirname加入到庫檔案的搜尋目錄列表中,預設情況下gcc 只鏈結共                       享庫

-lfoo                 鏈結名為libfoo的函式庫

-o                    優化編譯過的**

-on                   指定**優化的級別為n,o<=n<=3

-v                    顯示在編譯過程的每一步中用到的命令

-x language filename  設定檔案所使用的語言,使字尾名無效,對以後的多個有效.也就是根據                       約定c語言的字尾名稱是.c的,而c++的字尾名是.c或者.cpp,如果你很                       個性,決定你的c**檔案的字尾名是.pig 哈哈,那你就要用這個參                        數,這個引數對他後面的檔名都起作用,除非到了下乙個引數的使用                       。  例 gcc -x c hello.pig

-x none filename      關掉上乙個選項,也就是讓gcc根據檔名字尾,自動識別檔案型別

例:gcc -x c hello.pig -x none hello2.c

-c                    只啟用預處理,編譯,和彙編,也就是他只把程式做成obj檔案

例:gcc -c hello.c   他將生成.o的obj檔案

-o              制定目標名稱,預設的時候,gcc 編譯出來的檔案是a.out,很難聽,如果你和我                 有同感,改掉它!

例子用法

gcc -o hello.exe hello.c (哦,windows用習慣了)

gcc -o hello.asm -s hello.c

-idir           在你是用#include」file」的時候,gcc/g++會先在當前目錄查詢你所制定的                  標頭檔案,如果沒有找到,他回到預設的頭檔案目錄找,如果使用-i制定了目錄,                  他回先在你所制定的目錄查詢,然後再按常規的順序去找.對#include,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造成的依賴關係。

-md             和-m相同,但是輸出將匯入到.d的檔案裡面

-mmd            和-mm相同,但是輸出將匯入到.d的檔案裡面

-wa,option      此選項傳遞option給匯程式設計序;如果option中間有逗號,就將option分成多個                  選項,然後傳遞給會匯程式設計序

-wl.option      此選項傳遞option給連線程式;如果option中間有逗號,就將option分成多個                  選項,然後傳遞給會連線程式.

-llibrary       制定編譯的時候使用的庫

例子用法 gcc -lcurses hello.c  使用curses庫編譯程式

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

-o0 -o1 -o2 -o3 編譯器的優化選項的4個級別,-o0表示沒有優化,-o1為預設值,-o3優化級別最高 

-g              只是編譯器,在編譯的時候,產生除錯資訊。

-gstabs         此選項以stabs格式聲稱除錯資訊,但是不包括gdb除錯資訊.

-gstabs+        此選項以stabs格式聲稱除錯資訊,並且包含僅供gdb使用的額外除錯資訊.

-ggdb           此選項將盡可能的生成gdb的可以使用的除錯資訊.

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

-share          此選項將盡量使用動態庫,所以生成檔案比較小,但是需要系統有動態庫.

-traditional    試圖讓編譯器支援傳統的c語言特性 

gcc 常用命令行列表

指定輸出檔名,在編譯為目標 時,這一選項不是必須的。如果file沒有指定,預設檔名是a.out.c 只編譯不鏈結 dfoo bar 在命令列定義預處理巨集foo,其值為bar idirname 將dirname加入到頭檔案的搜尋目錄列表中 ldirname 將dirname加入到庫檔案的搜尋目錄列表...

gcc的常用命令行選項

gcc的常用命令行選項 選項 說明 o file 指定輸出檔名,在編譯為目標 時,這一選項不 是必須的.如果file沒有指定,預設檔名時a.out c 只編譯不鏈結 dfoo bar 在命令列定義預處理巨集foo,其值為bar idirname 將dirname加入到包含檔案的搜尋目錄列表中 ldi...

mysql常用命令行 mysql常用命令行操作語句

第一招 mysql服務的啟動和停止 net stop mysql net start mysql 第二招 登陸mysql 語法如下 mysql u使用者名稱 p使用者密碼 鍵入命令mysql uroot p,回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中了,mysql的提示符是...