久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Linux下gcc與g++用法以及編寫makefile

 junleo 2010-08-07
Linux下gcc與g++用法以及編寫makefile
來源:http://huobumingbai.blog.51cto.com/1196746/308526

(本文主要以gcc為演示,,如果是C++程序直接將給 gcc改為g++即可)
1.         gcc與g++編譯流程:
1)         編譯流程:

2)         預(yù)處理:生成.i的預(yù)處理文件,。
Ø 只激活預(yù)處理,這個(gè)不生成文件,,需要把它重定向一個(gè)輸出文件,。
Ø 演示:

3)         編譯:生成.s的編譯文件。
Ø 只激活預(yù)處理和編譯,,把文件編譯成匯編代碼,。
Ø 演示:

4)         匯編:生成.o的匯編文件。
Ø 只激活預(yù)處理、編譯和匯編,,把程序做成obj文件,。
Ø 演示:

5)         鏈接:生成鏈接文件。
Ø 激活預(yù)處理,、編譯、匯編和鏈接,。
Ø 演示:

6)         慣用:

2.         gcc與g++常用參數(shù)介紹:
1)         -E
Ø -E選項(xiàng)指示編譯器僅對(duì)輸入文件進(jìn)行預(yù)處理。當(dāng)這個(gè)選項(xiàng)被使用時(shí),,預(yù)處理器的輸出被送到標(biāo)準(zhǔn)輸出而不是儲(chǔ)存在文件里,。
Ø 演示:

2)         -S
Ø -S選項(xiàng)告訴GCC在為C代碼產(chǎn)生了匯編語言文件后停止編譯。GCC產(chǎn)生的匯編語言文件的缺省擴(kuò)展名是.s,。
Ø 演示:

3)         -c
Ø -c選項(xiàng)告訴GCC僅把源代碼編譯為目標(biāo)代碼,。缺省時(shí)GCC建立的目標(biāo)代碼文件有一個(gè).o的擴(kuò)展名。
Ø 演示:

4)         -o
Ø -o選項(xiàng)來為將產(chǎn)生的可執(zhí)行文件用指定的文件名,。
Ø 演示:

5)         -O
Ø -O選項(xiàng)告訴GCC對(duì)源代碼進(jìn)行基本優(yōu)化,,這些優(yōu)化在大多數(shù)情況下都會(huì)使程序執(zhí)行的更快,優(yōu)化分為4個(gè)等級(jí)(-O0,,-O1,,-O2,-O3),。
-O0表示沒有優(yōu)化,。
-O1為缺省值,主要進(jìn)行跳轉(zhuǎn)和延遲退棧兩種優(yōu)化,。
-O2除了完成-O1的優(yōu)化之外,,還進(jìn)行一些額外的指令調(diào)整工作。
-O3除了完成-O2的優(yōu)化之外,,還進(jìn)行包括循環(huán)展開和其他一些與處理特性相關(guān)的優(yōu)化工作,。
Ø 演示:

其他優(yōu)化等級(jí)的用法與演示中-O3的用法一樣。
6)         -x
Ø 設(shè)定文件編譯所使用的語言,,使后綴名無效,。
Ø 演示:

7)         -C
Ø 在預(yù)處理的時(shí)候,不刪除注釋信息,。
Ø 演示:

8)         -M
Ø 生成文件關(guān)聯(lián)信息,。包含目標(biāo)文件所依賴的所有源代碼。
Ø 演示:

2.         編寫makefile:
1)         編寫一個(gè)程序:
Ø 共5個(gè)文件,,3個(gè).cpp文件,,2個(gè).h文件。
Ø main.cpp:

 

Ø printf1.cpp:

 

Ø printf1.h:

 

Ø printf2.cpp:

 

Ø printf2.h:

Ø 常規(guī)編譯:
匯編main.cpp:

匯編printf1.cpp

匯編printf2.cpp

將3個(gè)obj文件鏈接到一個(gè)文件上:

運(yùn)行:

總共生成的文件:

2)         運(yùn)用makefile文件:
Ø 優(yōu)點(diǎn):
由上例可知,照這樣的編譯方法,,如果是一個(gè)項(xiàng)目的話,,可能存在上百個(gè)文件,,豈不是太麻煩了,,所以要把編譯過程寫進(jìn)一個(gè)文件中:makefile。
Ø 編寫規(guī)則:
以#號(hào)開始的為注釋
具體編譯過程:
對(duì)象:依賴項(xiàng)
編譯方式
makefile文本向右縮進(jìn)時(shí)使用TAB鍵,,不能用空格代替,。
Ø 編寫(以上面得程序?yàn)槔?:
創(chuàng)建makefile文件:

編寫makefile文件:
常用寫法:

前三行類似一個(gè)變量的定義,取值時(shí)使用$(定義值)來取值,。
也可以寫成:

等價(jià)于上面的寫法,,缺點(diǎn)是文件一旦過多,修改也不容易,。
運(yùn)行makefile文件:

生成的文件:

運(yùn)行目標(biāo)文件:

刪除生成文件:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多