gcc/g++ 命令的常用選項


gcc/g++ 命令的常用選項
使用g++編譯CPP文件如果用gcc編譯C++源文件時,加以下選項:-lstdc++,否則使用了C++操作的文件編譯會出錯。假如在程序中用到new delete操作,而不加此選項進行編譯會出現以下錯誤信息:zch07eha01:/home/mrbt48/cpp> gcc -o RG RandomTest.cpp
/tmp/cciMHHyb.o(.text+0x2b): In function `main':
: undefined reference to `operator new(unsigned int)'
/tmp/cciMHHyb.o(.text+0x51): In function `main':
: undefined reference to `operator delete(void*)'
/tmp/cciMHHyb.o(.text+0x5e): In function `main':
: undefined reference to `operator new[](unsigned int)'
/tmp/cciMHHyb.o(.text+0x9f): In function `main':
: undefined reference to `RandomGenerator::getRandom(int*, int)'
/tmp/cciMHHyb.o(.text+0x10f): In function `main':
: undefined reference to `operator delete[](void*)'
/tmp/cciMHHyb.o(.gnu.linkonce.t._ZNSt8auto_ptrI15RandomGeneratorED1Ev+0xf): In function `std::auto_ptr<RandomGenerator>::~auto_ptr()':
: undefined reference to `operator delete(void*)'
/tmp/cciMHHyb.o(.gnu.linkonce.t._ZNSt8auto_ptrI15RandomGeneratorE5resetEPS0_+0x19): In function `std::auto_ptr<RandomGenerator>::reset(RandomGenerator*)':
: undefined reference to `operator delete(void*)'
/tmp/cciMHHyb.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status加入 -lstdc++選項后,成功通過:zch07eha01:/home/mrbt48/cpp> gcc -lstdc++ -o RG RandomTest.cpp

gcc/g++ 命令的常用選項格式(選項  解釋)

-o FILE           指定輸出文件名,在編譯為目標代碼時,這一選項不是必須的。如果FILE沒有指定,缺省文件名是a.out.

-c           只編譯生成目標文件,不鏈接

-m486        針對 486 進行代碼優化。

-O0          不進行優化處理。

-O 或 -O1  優化生成代碼。

-O2          進一步優化。

-O3 比 -O2 更進一步優化,包括 inline 函數。

-w           關閉所有警告,建議不要使用此項

-Wall        允許發出gcc能提供的所有有用的警告,也可以用-W(warning)來標記指定的警告

-werror      把所有警告轉換為錯誤,以在警告發生時中止編譯過程                          

-MM          輸出一個make兼容的相關列表

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

-E           只運行 C 預編譯器。

-shared      生成共享目標文件。通常用在建立共享庫時。

-static      鏈接靜態庫,即執行靜態鏈接

-lFOO        鏈接名為libFOO的函數庫

-g           在可執行程序中包含標准調試信息

-ggdb        在可執行程序中包含只有GNU debugger才能使別的達兩條是信息

-O           優化編譯過的代碼

-ON          指定代碼優化的級別為N,o<=N<=3

-ansi        支持ANSI/ISO C的標准語法,取消GNU的語法擴展中與該標准有沖突的部分(但這一選項並不能保證生成ANSI兼容的代碼) 這一選項將禁止 GNU C 的某些特色, 例如 asm 或 typeof 關鍵詞。

-pedantic  允許發出ANSI/ISO C標准所列出的所有警告

-errors      允許發出ANSI/ISO C標准所列出的所有錯誤

-traditional           支持Kernighan & Ritchie C語法(如用舊式語法定義函數);如果不知道這個選項的含義,也沒有關系
-IDIRECTORY      指定額外的頭文件搜索路徑DIRECTORY。

-LDIRECTORY      指定額外的函數庫搜索路徑DIRECTORY。

-DFOO=BAR 在命令行定義預處理宏FOO,其值為BAR

-IDIRNAME 將DIRNAME加入到頭文件的搜索目錄列表中

-LDIRNAME 將DIRNAME加入到庫文件的搜索目錄列表中,缺省情況下gcc 只鏈接共享庫

-DMACRO      以字符串“1”定義 MACRO 宏。

-DMACRO=DEFN     以字符串“DEFN”定義 MACRO 宏。

-UMACRO      取消對 MACRO 宏的定義。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM