![Linux的gcc編譯過程介紹_第1頁](http://file4.renrendoc.com/view/0a84182281a55e7ef8203208c1d04983/0a84182281a55e7ef8203208c1d049831.gif)
![Linux的gcc編譯過程介紹_第2頁](http://file4.renrendoc.com/view/0a84182281a55e7ef8203208c1d04983/0a84182281a55e7ef8203208c1d049832.gif)
![Linux的gcc編譯過程介紹_第3頁](http://file4.renrendoc.com/view/0a84182281a55e7ef8203208c1d04983/0a84182281a55e7ef8203208c1d049833.gif)
![Linux的gcc編譯過程介紹_第4頁](http://file4.renrendoc.com/view/0a84182281a55e7ef8203208c1d04983/0a84182281a55e7ef8203208c1d049834.gif)
![Linux的gcc編譯過程介紹_第5頁](http://file4.renrendoc.com/view/0a84182281a55e7ef8203208c1d04983/0a84182281a55e7ef8203208c1d049835.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁Linux的gcc編譯過程介紹
1.gcc編譯器的安裝
工作中,在(Linux)環(huán)境下,有過量產(chǎn)項目的公司,gcc一般都是已經(jīng)安裝好了的。如果需要安裝,請從官網(wǎng)(下載)或網(wǎng)上找資源下載
此處不贅述安裝過程了
查看是否安裝成功:gcc-v能查到gcc版本號,說明安裝成功
2.編譯過程介紹:
最開始學(xué)習(xí)(編程)的時候,一般都是用IDE去編譯的,不管是IDE還是gcc編譯的時候都會有四個過程
一個編譯過程一般要經(jīng)過四個過程:
預(yù)處理編譯(匯編)鏈接
預(yù)處理:展開頭文件/宏替換/去掉解釋/條件編譯
編譯:檢查語法,生成匯編代碼
匯編:匯編代碼轉(zhuǎn)換機器碼,但還不可執(zhí)行
鏈接:將要用到的庫鏈接到一起生成可執(zhí)行程序
gcc首先調(diào)用cpp進行預(yù)處理,在預(yù)處理過程中,對源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義define等)進行分析。接著調(diào)用cc1進行編譯,這個階段將預(yù)處理得到的源代碼文件,進行“翻譯轉(zhuǎn)換”,產(chǎn)生出機器語言的目標(biāo)程序,得到機器語言的匯編文件。匯編過程是針對匯編語言的步驟,調(diào)用as進行工作,一般來講,.S為后綴的匯編語言源代碼文件和匯編、.s為后綴的匯編語言文件經(jīng)過預(yù)編譯和匯編之后都生成以.o為后綴的目標(biāo)文件。當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld來完成最后的關(guān)鍵性工作,這個階段就是鏈接。在鏈接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢?,同時,該程序所調(diào)用到的庫函數(shù)也從各自所在的庫中鏈到合適的地方。
3.gcc的使用:
3.1簡單使用
命令格式:gcc[選項][文件名]
以編譯單個文件為例,最簡單的使用方法:
gcc(te)st.c//默認(rèn)生成可執(zhí)行文件的名字為a.out
指定可執(zhí)行文件的名字:gcc–otesttest.c//指定生成可執(zhí)行文件的名字為test
3.2gcc編譯經(jīng)歷的四個過程:
(1)預(yù)處理:gcc-Etest.c-otest.i//生成預(yù)編譯文件
(2)編譯:gcc-Stest.i-otest.s//生成匯編代碼
(3)匯編:gcc-ctest.s-otest.o(或astest.s-otest.o)//生成目標(biāo)文件
(4)鏈接:gcc-otesttest.o//鏈接,生成可執(zhí)行文件
3.3gcc常用選項
選項含義-E只預(yù)編譯,不做任何處理-c只編譯不鏈接,生成目標(biāo)文件”.o”-S只編譯不會匯編,生成匯編代碼”.s”-g在執(zhí)行過程中包含標(biāo)準(zhǔn)調(diào)試信息-ofile指定將file文件作為輸出文件-v打印出編譯器內(nèi)部編譯各過程的命令行信息和編譯器的版本-Idir在頭文件的搜索路徑列表中添加dir目錄3.4gcc支持的后綴名
后綴名所對應(yīng)的語言.cC原始程序.C/.cc/.cxx(C++)原始程序.mObjec(ti)ve.c原始程序.i已經(jīng)預(yù)處理的C原始程序.ii已經(jīng)預(yù)處理的C++原始程序.s/.S匯編語言原始程序.h預(yù)處理文件(頭文件).o目標(biāo)文件4.靜態(tài)庫和動態(tài)庫
鏈接可分為動態(tài)鏈接和靜態(tài)鏈接:
靜態(tài)庫是指編譯鏈接時,把庫文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運行時也就不再需要庫文件了。其后綴名一般為“.a”。
動態(tài)庫與之相反,在編譯鏈接時并沒有把庫文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時由運行時鏈接文件加載庫,這樣可以節(jié)省系統(tǒng)的開銷。動態(tài)庫一般后綴名為“.so”。
gcc在編譯時默認(rèn)使用動態(tài)庫鏈接,加上-stat(ic)參數(shù)則采用靜態(tài)鏈接。
gcctest.o-static-otest_static
可看出鏈接靜態(tài)庫和動態(tài)庫,最終生成的可執(zhí)行文件大小相差很多
動態(tài)庫鏈接,加上-static參數(shù)則采用靜態(tài)鏈接。
gcctest.o-static-otest_static
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 轉(zhuǎn)正申請書范文1000字
- 教師分配申請書
- 怎樣寫貸款申請書
- 知識寶庫的未來趨勢與挑戰(zhàn)
- 現(xiàn)代物流科技在商業(yè)領(lǐng)域的應(yīng)用與創(chuàng)新
- 年度餐廳服務(wù)員工作計劃范文
- 供綠化樹苗合同范本
- 2025年度城市防災(zāi)減災(zāi)紀(jì)錄片制作合同范本
- 憑產(chǎn)地買賣合同范例
- 買方知識產(chǎn)權(quán)合同范本
- 初中七 八年級生物思維導(dǎo)圖大全 張
- 婆媳關(guān)系證明
- 江蘇宿遷家鄉(xiāng)介紹旅游課件
- 莎士比亞十四行詩之十八課件
- 幼兒園中班語言《拼小人》課件
- 文化差異與跨文化交際課件(完整版)
- 臭和味檢測原始記錄表
- 變壓器檢修風(fēng)險分析及管控措施
- 勞務(wù)派遣公司介紹ppt課件(PPT 35頁)
- 紀(jì)檢監(jiān)察機關(guān)派駐機構(gòu)工作規(guī)則PPT
- 護士長績效考核評分細(xì)則表
評論
0/150
提交評論