從源代碼到可執(zhí)行程序的過程(源代碼編譯為可執(zhí)行程序的過程)
從源程序文件helloworldc生成可執(zhí)行文件helloworldexe的過程通常分為四個(gè)步驟預(yù)處理編譯匯編和鏈接預(yù)處理在這一步中,預(yù)處理器將源文件中的所有以 quot#quot 開頭的指令處理掉,如 #include#define 等,將頭文件;生成可執(zhí)行文件,windows下是exe文件舉個(gè)例子lizicpp編寫代碼文件lizio編譯后生成文件liziexe鏈接后生成可執(zhí)行文件現(xiàn)在大多數(shù)人都用可視化的編寫軟件,從源程序到可執(zhí)行文件的中間過程肯定看不到的。
1第一步,打開C語(yǔ)言編譯軟件,輸入你要執(zhí)行的程序源代碼,如下圖所示2第二步,代碼編寫完成之后,依次點(diǎn)擊”編譯“”組建“”執(zhí)行“三個(gè)選項(xiàng),也可以通過依此右邊的三個(gè)快捷鍵完成上述操作,如下圖所示3第;這個(gè)過程有兩個(gè)叫法,編譯或者解釋有些高級(jí)語(yǔ)言在把源程序轉(zhuǎn)換為可執(zhí)行程序的時(shí)候,需要先對(duì)完整的源程序做詞法分析語(yǔ)法分析等一系列檢測(cè),所有語(yǔ)法都沒有問題后,一次性把所有源代碼翻譯成機(jī)器碼,這要求源程序中不能有。
源代碼可以直接由計(jì)算機(jī)執(zhí)行嗎
第三步編譯器生成目標(biāo)代碼,一個(gè)源文件生成一個(gè)目標(biāo)代碼gcc c abcc會(huì)生成abco第四步連接器從目標(biāo)代碼生成可執(zhí)行文件目標(biāo)代碼包括機(jī)器碼和符號(hào)表函數(shù)及變量名連接器的主要作用是通過符號(hào)表在庫(kù)文件和其他模塊。
1可重定位文件2共享的目標(biāo)文件3可執(zhí)行文件5鏈接程序根據(jù)開發(fā)人員指定的同庫(kù)函數(shù)的鏈接方式的不同,鏈接處理可分為兩種1靜態(tài)鏈接2動(dòng)態(tài)鏈接經(jīng)過上述五個(gè)過程,C源程序就最終被轉(zhuǎn)換成。
用開發(fā)工具VC++,源代碼編譯后生成目標(biāo)文件xxxobj,然后經(jīng)過鏈接變成可執(zhí)行程序xxxexe,用VC++的話,在你工程的存儲(chǔ)路徑下有一個(gè)Debug文件夾,里面存放的就是可執(zhí)行程序exe你每次運(yùn)行的時(shí)候,運(yùn)行的就是這個(gè)exe文件。
鏈接在編譯過程中,源代碼可能會(huì)引用其他庫(kù)文件例如標(biāo)準(zhǔn)庫(kù)外部庫(kù)等鏈接器將這些庫(kù)文件與編譯生成的二進(jìn)制代碼合并,形成一個(gè)完整的可執(zhí)行文件優(yōu)化編譯器和鏈接器可能會(huì)對(duì)生成的二進(jìn)制代碼進(jìn)行優(yōu)化,以提高程序。
C語(yǔ)言程序可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的C語(yǔ)言編譯器和庫(kù),然后將C源代碼編譯連接成目標(biāo)二進(jìn)制文件之后即可運(yùn)行1預(yù)處理輸入源程序并保存C文件2編譯將源程序翻譯為目標(biāo)文件。
2編譯 這一階段,編譯器對(duì)源碼進(jìn)行詞法分析語(yǔ)法分析優(yōu)化等操作,最后生成匯編代碼這是整個(gè)過程中最重要的一步,因此也常把整個(gè)過程稱為編譯可以通過選項(xiàng)S使GCC在進(jìn)行完編譯后停止,生成s的匯編程序例如gcc。
從源代碼到生成可執(zhí)行程序的過程中,不包括
在平常應(yīng)用程序開發(fā)中,從源代碼到可執(zhí)行文件,需要經(jīng)過四個(gè)步驟,分別是,預(yù)編譯,編譯,匯編和鏈接1預(yù)編譯 預(yù)編譯過程主要處理源代碼文件中以quot#quot開始與編譯指令比如常見quot#includequot,quot#definequot等,主要處理規(guī)則如下。
5第五步,執(zhí)行完上面的操作之后,可以輕松查看網(wǎng)站的源代碼,見下圖,轉(zhuǎn)到下面的步驟6第六步,執(zhí)行完上面的操作之后,如果要關(guān)閉網(wǎng)頁(yè)源代碼,只需單擊左上角的“返回”按鈕,見下圖這樣,就解決了這個(gè)問題了。
一個(gè)源程序到一個(gè)可執(zhí)行程序的過程預(yù)編譯編譯匯編鏈接其中,編譯是主要部分,其中又分為六個(gè)部分詞法分析語(yǔ)法分析語(yǔ)義分析中間代碼生成目標(biāo)代碼生成和優(yōu)化預(yù)編譯主要處理源代碼文件中的以“#”開頭的。
開發(fā)C程序有四個(gè)步驟編輯編譯連接和運(yùn)行任何一個(gè)體系結(jié)構(gòu)處理器上都可以使用C語(yǔ)言程序,只要該體系結(jié)構(gòu)處理器有相應(yīng)的C語(yǔ)言編譯器和庫(kù),那么C源代碼就可以編譯并連接到目標(biāo)二進(jìn)制文件上運(yùn)行1預(yù)處理導(dǎo)入源程序。
C語(yǔ)言程序可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的C語(yǔ)言編譯器和庫(kù),然后將C源代碼編譯連接成目標(biāo)二進(jìn)制文件之后即可運(yùn)行1編輯輸入源程序并保存C文件2編譯將源程序翻譯成目標(biāo)文件。
在C語(yǔ)言中,完成C源文件編輯后到生成執(zhí)行文件的步驟是預(yù)編譯 處理有#標(biāo)識(shí)的代碼,如將include的文件進(jìn)行拷貝#define的條件編譯等等編譯 編譯就是將第一階段處理得到的文件通過詞法語(yǔ)法分析等轉(zhuǎn)換為匯編,對(duì)目標(biāo)代碼的。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。