unix下開發(fā)常用的編譯工具gcc,我對(duì)于gcc的了解知道的很少,
一般用到的也就是gcc -o xx xx.cpp
今天翻了一下gnu的gcc manual 花了點(diǎn)時(shí)間總結(jié)了一下,
給大家分享一下!呵呵,希望對(duì)大家有幫助.
這里介紹一下gcc的常用命令選項(xiàng)(可以參考gnu gcc manual).
1. gcc 支持的語(yǔ)言.
GCC 全稱是GNU Compiler Collection ,包含一些主要編譯器支持語(yǔ)言 C, C++, Objective-C, Java, Fortran, and Ada的編譯.
2.gcc 命令選項(xiàng)
當(dāng)執(zhí)行g(shù)cc的時(shí)候通常會(huì)經(jīng)過(guò)四個(gè)處理過(guò)程,preprocessing, compilation, assembly and linking .可以通過(guò)加不同的選項(xiàng)來(lái)中止到某個(gè)過(guò)程.
a.總的選項(xiàng).
-c -S -E -o file -pipe -pass-exit-codes
-x language -v -### --help --target-help --version
編譯器編譯文件要經(jīng)過(guò)四個(gè)階段,如上所述.是按順序來(lái)進(jìn)行的.
編譯器根據(jù)輸入文件的后綴來(lái)決定進(jìn)入哪個(gè)階段的處理過(guò)程:
file.c c 文件要經(jīng)過(guò)豫處理.
file.i c源文件不必進(jìn)行豫處理。
file.ii c++源文件不必進(jìn)行豫處理。
file.h c/c++豫編譯頭文件.
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C c++源文件要經(jīng)過(guò)豫處理.
file.hh
file.H c++頭文件轉(zhuǎn)換為豫處理頭文件.
file.s
Assembler code.
file.S
Assembler code which must be preprocessed
-x language =========選項(xiàng)是為了指定語(yǔ)言告訴gcc 文件是什么語(yǔ)言的,
不必要缺省的后綴識(shí)別.
languge 可以是:
c c-header cpp-output
c++ c++-header c++-cpp-output
objective-c objective-c-header objc-cpp-output
assembler assembler-with-cpp
ada
f77 f77-cpp-input ratfor
java
treelang
-x none 用后綴識(shí)別,關(guān)閉語(yǔ)言識(shí)別.
-c 只是編譯不連接,生成的都是目標(biāo)文件. .c, .i, .s ==> .o
-S 只是編譯不進(jìn)行匯編,生成匯編代碼. .c, .i ==>.s
-E 只是進(jìn)行豫編譯,不做其他處理.
-o file 把輸出文件輸出到file里.
-v 打印出編譯器內(nèi)部編譯的各個(gè)過(guò)程的命令行信息.和編譯器的版本.
-### 同上,但是不真正執(zhí)行命令.
-pipe 編譯器編譯時(shí)各個(gè)階段的信息是保存到臨時(shí)文件的,如果你不想
用臨時(shí)文件的話可以通過(guò)管道也行.這個(gè)命令選項(xiàng)就用上了.不過(guò)有些系統(tǒng)不支持.
編者注:無(wú)雙網(wǎng)友補(bǔ)充
還有其它的選項(xiàng) 如-On(n=1,2,3) -arch=pentium4 這些用于優(yōu)化的
-g用于調(diào)試的
還有prof支持的 可以判斷程序的運(yùn)行效率