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