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的提示符是...