使用g++編譯CPP文件
如果用gcc編譯C++源文件時(shí),加以下選項(xiàng):-lstdc++,否則使用了C++操作的文件編譯會(huì)出錯(cuò)。
假如在程序中用到new delete操作,而不加此選項(xiàng)進(jìn)行編譯會(huì)出現(xiàn)以下錯(cuò)誤信息:
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++選項(xiàng)后,成功通過:
zch07eha01:/home/mrbt48/cpp> gcc -lstdc++ -o RG RandomTest.cpp
gcc/g++ 命令的常用選項(xiàng)
格式(選項(xiàng) && 解釋 )
linux gcc常用命令集合:
-o FILE      &&     指定輸出文件名,在編譯為目標(biāo)代碼時(shí),這一選項(xiàng)不是必須的。如果FILE沒有指定,缺省文件名是a.out.
-c           &&     只編譯生成目標(biāo)文件,不鏈接
-m486        &&     針對(duì) 486 進(jìn)行代碼優(yōu)化。
-O0          &&     不進(jìn)行優(yōu)化處理。
-O 或 -O1 &&     優(yōu)化生成代碼。
-O2          &&     進(jìn)一步優(yōu)化。
-O3 比 -O2 &&     更進(jìn)一步優(yōu)化,包括 inline 函數(shù)。
-w           &&     關(guān)閉所有警告,建議不要使用此項(xiàng)
-Wall        &&     允許發(fā)出gcc能提供的所有有用的警告,也可以用-W(warning)來標(biāo)記指定的警告
-werror      &&     把所有警告轉(zhuǎn)換為錯(cuò)誤,以在警告發(fā)生時(shí)中止編譯過程                             
-MM          &&     輸出一個(gè)make兼容的相關(guān)列表
-v           &&     顯示在編譯過程的每一步中用到的命令
-E           &&     只運(yùn)行 C 預(yù)編譯器。
-shared      &&     生成共享目標(biāo)文件。通常用在建立共享庫時(shí)。
-static      &&     鏈接靜態(tài)庫,即執(zhí)行靜態(tài)鏈接
-lFOO        &&     鏈接名為libFOO的函數(shù)庫
-g           &&     在可執(zhí)行程序中包含標(biāo)準(zhǔn)調(diào)試信息
-ggdb        &&     在可執(zhí)行程序中包含只有GNU debugger才能使別的達(dá)兩條是信息
-O           &&     優(yōu)化編譯過的代碼
-ON          &&     指定代碼優(yōu)化的級(jí)別為N,o<=N<=3
-ansi        &&     支持ANSI/ISO C的標(biāo)準(zhǔn)語法,取消GNU的語法擴(kuò)展中與該標(biāo)準(zhǔn)有沖突的部分(但這一選項(xiàng)并不能保證生成ANSI兼容的代碼) 這一選項(xiàng)將禁止 GNU C 的某些特色, 例如 asm 或 typeof 關(guān)鍵詞。
-pedantic &&     允許發(fā)出ANSI/ISO C標(biāo)準(zhǔn)所列出的所有警告
-pedantic -errors      &&     允許發(fā)出ANSI/ISO C標(biāo)準(zhǔn)所列出的所有錯(cuò)誤
-traditional           &&     支持Kernighan & Ritchie C語法(如用舊式語法定義函數(shù));如果不知道這個(gè)選項(xiàng)的含義,也沒有關(guān)系

-IDIRECTORY      &&     指定額外的頭文件搜索路徑DIRECTORY。
-LDIRECTORY      &&     指定額外的函數(shù)庫搜索路徑DIRECTORY。
-DFOO=BAR &&     在命令行定義預(yù)處理宏FOO,其值為BAR
-IDIRNAME &&     將DIRNAME加入到頭文件的搜索目錄列表中
-LDIRNAME &&     將DIRNAME加入到庫文件的搜索目錄列表中,缺省情況下gcc 只鏈接共享庫
-DMACRO      &&     以字符串“1”定義 MACRO 宏。
-DMACRO=DEFN     &&     以字符串“DEFN”定義 MACRO 宏。
-UMACRO      &&     取消對(duì) MACRO 宏的定義。


ZZ自http://hi.baidu.com/chenminliang/blog/item/910be1bf698fc20b19d81f06.html