下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第c語言實(shí)現(xiàn)從源文件從文本到可執(zhí)行文件經(jīng)歷的過程目錄源文件從文本到可執(zhí)行文件經(jīng)歷的過程從.c文件到.exe文件源程序如何到可執(zhí)行程序
源文件從文本到可執(zhí)行文件經(jīng)歷的過程
從.c文件到.exe文件
gcchello.c-ohello.exe
源文件(-E)預(yù)處理文件(-S)匯編文件(-c)目標(biāo)文件(無)可執(zhí)行文件
hello.c--預(yù)處理--hello.i--編譯--hello.s---匯編--hello.o--鏈接--hello.exe
預(yù)處理
gcc-Ehello.c-ohello.i
1.頭文件展開不檢查語法錯(cuò)誤,可以展開任意文件
2.宏定義將宏名替換為宏值,不檢查語法錯(cuò)誤
3.替換注釋變成空行
4.展開條件編譯根據(jù)條件來展開指令
編譯
gcc-Shello.i-ohello.s
1.將c程序翻譯為匯編指令
2.逐行檢查語法錯(cuò)誤整個(gè)編譯4步中最耗時(shí)間的過程
匯編
gcc-chello.s-ohello.o
1.將匯編指令翻譯成對(duì)應(yīng)的二進(jìn)制編碼
鏈接
gcchello.o-ohello.exe
1.數(shù)據(jù)段合并
2.數(shù)據(jù)地址回填
3.庫引入
寄存器、緩存、內(nèi)存三者關(guān)系
cpu計(jì)算時(shí),先預(yù)先把要用的數(shù)據(jù)從硬盤督導(dǎo)內(nèi)存,然后再把即將要用的數(shù)據(jù)讀到寄存器中。緩存能夠提高數(shù)據(jù)的讀取速度。
集成開發(fā)環(huán)境IDE
用于提供程序開發(fā)的應(yīng)用程序,一般包括編輯器、編譯器、調(diào)試器和用戶界面工具。
源程序如何到可執(zhí)行程序
源程序(源代碼)是指按照一定的程序設(shè)計(jì)語言規(guī)范編寫的未經(jīng)過編譯的文本文件,是具有可讀性的計(jì)算機(jī)語言指令??梢员茸髯约菏謱懙某绦虼a。
可執(zhí)行程序(ExecutableProgram,EXEfile)是可以在操作系統(tǒng)存儲(chǔ)空間中浮動(dòng)定位的二進(jìn)制可執(zhí)行程序。一般軟件安裝后會(huì)生成可執(zhí)行文件,可以直接加載到內(nèi)存中,并又操作系統(tǒng)加載并執(zhí)行。
以C語言為例,自己編寫的源代碼文件擴(kuò)展名為c,這個(gè)c文件就是源文件。
從源文件到可執(zhí)行文件一般需要經(jīng)過幾個(gè)步驟:預(yù)處理-編譯-匯編-鏈接這四個(gè)過程。
預(yù)處理:預(yù)處理相當(dāng)于根據(jù)預(yù)處理命令將源代碼轉(zhuǎn)換為新的c程序,不過通常以i為擴(kuò)展名。編譯:將得到的i文件翻譯成匯編代碼,通常以s為擴(kuò)展名。匯編:將匯編文件翻譯為機(jī)器指令,并打包成可重定位目標(biāo)程序的o文件。鏈接:將引用的其它o文件加到匯編后的o文件中,處理后得到最終的可執(zhí)行文件。
這里首先在linux操作系統(tǒng)中編寫源代碼,并命名為hello.c,內(nèi)容如下:
#includestdio.h
intmain()
printf("Helloworld!\n");
return0;
}
一個(gè)很簡單的源代碼,但是這樣的源代碼如果不是在集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)中是不能夠直接點(diǎn)擊執(zhí)行的,需要經(jīng)過一系列的操作,具體為:
#預(yù)處理
gcc-Ehello.c-ohello.i
gcc-Shello.i-ohello.s
gcc-chello.s-ohello.o
gcchello.o-ohello
經(jīng)過以下操作后,就能夠發(fā)現(xiàn)在hello.c文件同級(jí)目錄中出現(xiàn)了文件hello.i,hello.s,hello.o,hello??芍募ello
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代文閱讀:聯(lián)系上下文補(bǔ)寫內(nèi)容(期末專項(xiàng)訓(xùn)練)三年級(jí)語文上學(xué)期(統(tǒng)編版)
- 扣背護(hù)理要點(diǎn)總結(jié)
- 健康教育對(duì)更年期生活質(zhì)量的影響
- 健康促進(jìn)理論控?zé)熈⒎ǖ恼邎?zhí)行評(píng)估
- 健康傳播理論在婦幼健康管理中的應(yīng)用
- 人工智能在真實(shí)世界藥物研發(fā)中的應(yīng)用
- AI輔助職業(yè)病防治的人文關(guān)懷
- 艦艇知識(shí)考試題及答案
- 2026年中共南寧市青秀區(qū)紀(jì)律檢查委員會(huì)招聘備考題庫參考答案詳解
- 2026年鄭州軌道工程職業(yè)學(xué)院單招綜合素質(zhì)考試參考題庫帶答案解析
- 蘇州市施工圖無障礙設(shè)計(jì)專篇參考樣式(試行)2025
- 等腰三角形重難點(diǎn)題型歸納(七大類型)原卷版-2024-2025學(xué)年北師大版八年級(jí)數(shù)學(xué)下冊(cè)重難點(diǎn)題型突破
- 2024中國人形機(jī)器人產(chǎn)業(yè)發(fā)展藍(lán)皮書1
- 社會(huì)工作項(xiàng)目調(diào)研方案含問卷及訪談提綱
- 智慧樹知到《醫(yī)學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(川北醫(yī)學(xué)院)》2025章節(jié)測(cè)試附答案
- 全國高校輔導(dǎo)員素質(zhì)能力大賽試題(談心談話、案例分析)
- 《XXXX煤礦隱蔽致災(zāi)地質(zhì)因素普查報(bào)告》審查意見
- 2025年h5游戲活動(dòng)開發(fā)合同范文(2篇)
- 鋼結(jié)構(gòu)制作焊接操作手冊(cè)
- 康明斯M11發(fā)動(dòng)機(jī)介紹
- 手術(shù)室器械護(hù)士進(jìn)修總結(jié)
評(píng)論
0/150
提交評(píng)論