新聞中心
簡(jiǎn)介
請(qǐng)講一下linux如何源文件逐步編譯成可執(zhí)行文件。
十載的項(xiàng)城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整項(xiàng)城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“項(xiàng)城網(wǎng)站設(shè)計(jì)”,“項(xiàng)城網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
解答
首先先上圖對(duì)編譯的整個(gè)過程有個(gè)感性的認(rèn)識(shí),然后再逐步分析各個(gè)過程。
以hello.c 程序?yàn)槔?/p>
# includemain{ printf("hello\n"); }
一個(gè).c源程序需要經(jīng)過預(yù)處理器生成.i文件,再經(jīng)過編譯器生成.s文件,再經(jīng)過匯編器生成可重定位目標(biāo)文件.o文件,再與其他.o文件經(jīng)過鏈接器生成最終的可執(zhí)行目標(biāo)程序。
預(yù)處理階段。主要是處理源文件中以“#”開頭的預(yù)編譯指令。
刪除#define并展開宏
處理所有條件預(yù)編譯指令,如#if, #ifdef, #endif
插入頭文件到“#include”處
刪除所有注釋
添加行號(hào)和文件名標(biāo)識(shí),以便編譯時(shí)編譯器產(chǎn)生調(diào)試用的行號(hào)信息
保留所有#pragma編譯指令。
編譯階段。將預(yù)處理得到的預(yù)處理文件進(jìn)行語(yǔ)法分析,詞法分析,語(yǔ)義分析,優(yōu)化后,生成匯編代碼文件(匯編語(yǔ)言源程序)。
匯編階段。利用匯編程序(匯編器)將匯編語(yǔ)言源程序轉(zhuǎn)換成機(jī)器指令序列(機(jī)器語(yǔ)言程序)。
鏈接階段。將多個(gè)可重定位的目標(biāo)文件.o合并以生成可執(zhí)行文件,其可以被加載到內(nèi)存中,由系統(tǒng)執(zhí)行。
總結(jié)
以上就是本文關(guān)于Linux下將源文件編譯成目標(biāo)文件的過程解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
網(wǎng)頁(yè)標(biāo)題:Linux下將源文件編譯成目標(biāo)文件的過程解析
文章來源:http://fisionsoft.com.cn/article/jhdppj.html