gcc編譯器使用簡明指南_第1頁
gcc編譯器使用簡明指南_第2頁
gcc編譯器使用簡明指南_第3頁
gcc編譯器使用簡明指南_第4頁
gcc編譯器使用簡明指南_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

gcc編譯器使用簡要指南gcc對文獻的處理需要通過預處理->編譯->匯編->鏈接的環(huán)節(jié),從而產(chǎn)生一種可執(zhí)行文獻,各部分對應不一樣的文獻類型,詳細如下:file.c

c程序源文獻file.i

c程序預處理后文獻file.cxx

c++程序源文獻,也可以是file.cc/file.cpp/file.c++file.ii

c++程序預處理后文獻file.h

c/c++頭文獻file.s

匯編程序文獻file.o

目的代碼文獻gcc

[選項]

文獻列表-ansi

強制完全ANSI一致-c

僅編譯或匯編,生成目的代碼文獻,將.c、.i、.s等文獻生成.o文獻,其他文獻被忽視-S

僅編譯,不進行匯編和鏈接,將.c、.i等文獻生成.s文獻,其他文獻被忽視-E

僅預處理,并發(fā)送預處理后的.i文獻到原則輸出,其他文獻被忽視-o

file

創(chuàng)立可執(zhí)行文獻并保留在file中,而不是默認文獻a.out-g

產(chǎn)生用于調(diào)試和排錯的擴展符號表,用于GDB調(diào)試,牢記-g和-O一般不能一起使用-w

取消所有警告-W

給出更詳細的警告-O

[num]

優(yōu)化,可以指定0-3作為優(yōu)化級別,級別0表達沒有優(yōu)化-x

language

默認為-x

none,即依托后綴名確定文獻類型,加上-x

lan確定背面所有文獻類型,直到下一種-x出現(xiàn)為止-D

macro[=]

類似于源程序里的#define,在-D

macro中的macro可被源程序識別,例如gcc

-D

NUM

-D

FILE=\"bbs.txt\"

hello.c

-o

hello,第一種-D選項定義宏NUM,在程序中可以使用#ifdef來檢查與否被設置,第二個-D定義宏FILE,在源程序中可用-U

macro

類似于源程序開頭定義#undef

macro,也就是取消源程序中的某個宏定義-I

dir

將dir目錄加到搜尋頭文獻的目錄中去,并優(yōu)先于gcc中缺省的搜索目錄,有多種-I選項時,按照出現(xiàn)次序搜索-L

dir

將dir目錄加到搜索-lname選項指定的函數(shù)庫文獻的目錄列表中去,并優(yōu)先于gcc缺省的搜索目錄,有多種-L選項時,按照出現(xiàn)次序搜索-lname

在鏈接時使用函數(shù)庫libname.a,鏈接程序在-L

dir指定的目錄和/lib、/usr/lib目錄下尋找該庫文獻,在沒有使用-static選項時,假如發(fā)現(xiàn)共享函數(shù)庫libname.so,則使用libname.so進行動態(tài)鏈接

-fPIC

產(chǎn)生位置無關(guān)的目的代碼,可用于構(gòu)造共享函數(shù)庫-static

嚴禁與共享函數(shù)庫鏈接-shared

盡量與共享函數(shù)庫鏈接(默認)1.編譯單個文獻vihello.c

//創(chuàng)立源文獻hello.cgcc-ohellohello.c

//編譯為可執(zhí)行文獻hello,在默認狀況下產(chǎn)生的可執(zhí)行文獻名為a.out./hello

//執(zhí)行文獻,假如只寫hello是錯誤的,由于系統(tǒng)會將hello當指令來執(zhí)行,然后報錯2.編譯多種源文獻vimessage.cgcc-cmessage.c

//輸出message.o文獻,是一種已編譯的目的代碼文獻vimain.cgcc-cmain.c

//輸出main.o文獻gcc-oallmain.omessage.o

//執(zhí)行連接階段的工作,然后生成all可執(zhí)行文獻./all注意:gcc對怎樣將多種源文獻編譯成一種可執(zhí)行文獻有內(nèi)置的規(guī)則,所此前面的多種單獨環(huán)節(jié)可以簡化為一種命令。vimessage.cvimain.cgcc-oallmessage.cmain.c./all3.使用外部函數(shù)庫GCC常常與包括原則例程的外部軟件庫結(jié)合使用,幾乎每一種linux應用程序都依賴于GNUC函數(shù)庫GLIBC。vitrig.cgcc-otrig-lmtrig.cGCC的-lm選項,告訴GCC查看系統(tǒng)提供的數(shù)學庫libm。函數(shù)庫一般會位于目錄/lib或者/usr/lib中。4.共享函數(shù)庫和靜態(tài)函數(shù)庫靜態(tài)函數(shù)庫:每次當應用程序和靜態(tài)連接的函數(shù)庫一起編譯時,任何引用的庫函數(shù)的代碼都會被直接包括進最終二進制程序。共享函數(shù)庫:包括每個庫函數(shù)的單一全局版本,它在所有應用程序之間共享。vimessage.cvihello.cgcc-chello.cgcc-fPIC-cmessage.cgcc-shared-olibmessge.somessage.o其中,PIC命令行標識告訴GCC產(chǎn)生的代碼不要包括對函數(shù)和變量詳細內(nèi)存位置的引用,這是由于目前還無法懂得使用該消息代碼的應用程序會將它鏈接到哪一段地址空間。這樣編譯輸出的文獻message.o可以被用于建立共享函數(shù)庫。-shared標識將某目的代碼文獻變換成共享函數(shù)庫文獻。gcc-oall-lmessage-L.hell

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論