從C語言源代碼編寫完成到計(jì)算機(jī)能夠執(zhí)行的程序,大致經(jīng)過預(yù)編譯、編譯、匯編、鏈接四個(gè)過程,每個(gè)過程都會(huì)輸出一個(gè)文件。


預(yù)編譯過程的目標(biāo)是把C源文件變成中間代碼,具體內(nèi)容是:
包含的頭文件替換成對(duì)應(yīng)的函數(shù)聲明宏定義的展開,進(jìn)行字符串的替換處理?xiàng)l件編譯指令,如#ifdef/#else/#ifndef/#endif等刪除代碼中的注釋文件添加行號(hào)和標(biāo)識(shí)預(yù)編譯指令


編譯過程的目標(biāo)是把中間代碼變成匯編文件,具體內(nèi)容是:
對(duì)預(yù)處理文件進(jìn)行詞法分析,語法分析和語義分析
詞法分析:分析關(guān)鍵字,標(biāo)示符,立即數(shù)等是否合法語法分析:分析表達(dá)式是否遵循語法規(guī)則語義分析:在語法分析的基礎(chǔ)上進(jìn)一步分析表達(dá)式是否合法分析結(jié)束后進(jìn)行代碼優(yōu)化生成相應(yīng)的匯編代碼文件
編譯指令
gcc -S hello.i -o hello.s匯編
匯編過程的目標(biāo)是把匯編文件變成二進(jìn)制文件,具體內(nèi)容是:
匯編器將匯編代碼轉(zhuǎn)變?yōu)闄C(jī)器的可以執(zhí)行指令每條匯編語句幾乎都對(duì)應(yīng)一條機(jī)器指令匯編指令
gcc -c hello.s -o hello.o鏈接
鏈接過程的目標(biāo)是把二進(jìn)制文件變成可執(zhí)行程序,具體內(nèi)容是:
將二進(jìn)制文件所用到的外部庫(kù)綁定才能正常運(yùn)行
鏈接指令
gcc hello.o -o hello.out運(yùn)行可執(zhí)行程序計(jì)算機(jī)執(zhí)行最終生成的文件hello.out(可執(zhí)行程序),輸出結(jié)果如下:

logo設(shè)計(jì)網(wǎng)(www.just4love.cn),專業(yè)的logo免費(fèi)設(shè)計(jì)在線生成網(wǎng)站,全自動(dòng)智能化logo設(shè)計(jì),商標(biāo)設(shè)計(jì),logo在線生成!
歡迎使用logo設(shè)計(jì)網(wǎng)制作屬于您公司自己的logo,不僅專業(yè)而且經(jīng)濟(jì)實(shí)惠,全方位滿足您公司品牌化、視覺化的需求。