-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 營(yíng)銷推廣 > 專題列表 > 正文
- 開發(fā)一個(gè)c語言程序要經(jīng)過哪四個(gè)步驟
- 在C語言中,完成C源文件編輯后到生成執(zhí)行文件的步驟是什么?
- c語言可執(zhí)行程序文件是通過()和()生成的?
- c語言是怎樣編譯成可執(zhí)行文件的?
- 一個(gè)源程序(.c)變成可執(zhí)行(.exe)文件要經(jīng)過幾個(gè)步驟?詳細(xì)一點(diǎn)
c語言生成可執(zhí)行程序的過程(c語言生成可執(zhí)行程序的過程包括)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于c語言生成可執(zhí)行程序的過程的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器
官網(wǎng):https://ai.de1919.com。
本文目錄:
開發(fā)一個(gè)c語言程序要經(jīng)過哪四個(gè)步驟
開發(fā)一個(gè)C語言程序需要經(jīng)過的四個(gè)步驟:編輯、編譯、連接、運(yùn)行。
C語言程序可以使用在任意架構(gòu)的處理器上,只要那種架構(gòu)的處理器具有對(duì)應(yīng)的C語言編譯器和庫,然后將C源代碼編譯、連接成目標(biāo)二進(jìn)制文件之后即可運(yùn)行。
1、預(yù)處理:輸入源程序并保存(.C文件)。
2、編譯:將源程序翻譯為目標(biāo)文件(.OBJ文件)。
3、鏈接:將目標(biāo)文件生成可執(zhí)行文件(.EXE文件)。
4、運(yùn)行:執(zhí)行.EXE文件,得到運(yùn)行結(jié)果。
擴(kuò)展資料:
C語言代碼變?yōu)槌绦虻膸讉€(gè)階段:
1、首先是源代碼文件test.c和相關(guān)的頭文件,如stdio.h等被預(yù)處理器cpp預(yù)處理成一個(gè).i文件。經(jīng)過預(yù)編譯后的.i文件不包含任何宏定義,因?yàn)樗械暮暌呀?jīng)被展開,并且包含的文件也已經(jīng)被插入到.i文件中。
2、編譯過程就是把預(yù)處理完的文件進(jìn)行一系列的詞法分析、語法分析、語義分析以及優(yōu)化后產(chǎn)生相應(yīng)的匯編代碼文件,這個(gè)過程往往是我們所說的整個(gè)程序的構(gòu)建的核心部分,也是最復(fù)雜的部分之一。
3、匯編器不直接輸出可執(zhí)行文件而是輸出一個(gè)目標(biāo)文件,匯編器可以調(diào)用ld產(chǎn)生一個(gè)能夠運(yùn)行的可執(zhí)行程序。即需要將一大堆文件鏈接起來才可以得到“a.out”,即最終的可執(zhí)行文件。
4、在鏈接過程中,對(duì)其他定義在目標(biāo)文件中的函數(shù)調(diào)用的指令需要被重新調(diào)整,對(duì)實(shí)用其他定義在其他目標(biāo)文件的變量來說,也存在同樣問題。
參考資料來源:百度百科-c語言
在C語言中,完成C源文件編輯后到生成執(zhí)行文件的步驟是什么?
在C語言中,完成C源文件編輯后到生成執(zhí)行文件的步驟是:
預(yù)編譯
處理有#標(biāo)識(shí)的代碼,如將include的文件進(jìn)行拷貝、#define的條件編譯等等!
編譯
編譯就是將第一階段處理得到的文件通過詞法語法分析等轉(zhuǎn)換為匯編,對(duì)目標(biāo)代碼的生成進(jìn)行的優(yōu)化,翻譯成機(jī)器指令。生成的文件叫目標(biāo)文件。
鏈接
把目標(biāo)文件和所需要的庫,鏈接成為可執(zhí)行文件。
c語言可執(zhí)行程序文件是通過()和()生成的?
源程序文件不是可執(zhí)行文件。 C源程序文件是一種文本文件,它首先需要編譯器去編譯成目標(biāo)文件,在通過鏈接器鏈接庫代碼才能形成可執(zhí)行的二進(jìn)制exe文件。每一個(gè)C語言程序必須要經(jīng)過編譯和鏈接才能被計(jì)算機(jī)執(zhí)行,編譯是將C源碼翻譯成機(jī)器碼,鏈接是將將二進(jìn)制目標(biāo)文件裝配成一個(gè)具有特定格式的二進(jìn)制可執(zhí)行文件,比如Windows平臺(tái)上是PE格式,一般以.exe為擴(kuò)展名。 一個(gè)C語言程序從源碼到計(jì)算機(jī)系統(tǒng)可以執(zhí)行,更細(xì)致的劃分為:預(yù)處理——編譯——匯編——鏈接。預(yù)處理是對(duì)C語言源碼進(jìn)行文本處理,編譯階斷是將C源碼經(jīng)C編譯器生成匯編代碼,匯編階斷是將匯編代碼經(jīng)匯編器生成二進(jìn)制機(jī)器碼文件。這兩個(gè)合攏起來,籠統(tǒng)的可以叫做編譯階斷。語言是一門計(jì)算機(jī)語言,有自己一定的語法。但是,C語言并不能直接被對(duì)象所理解,需要將C語言轉(zhuǎn)變成可執(zhí)行代碼,即二進(jìn)制代碼。在C語言轉(zhuǎn)變成二進(jìn)制可執(zhí)行代碼時(shí),是以工程為單位的。而一個(gè)工程中往往會(huì)包含多個(gè)C文件。因此,需要將每個(gè)C文件都編譯成二進(jìn)制代碼。此時(shí),每個(gè)C文件所對(duì)應(yīng)的二進(jìn)制代碼是獨(dú)立的。由于工程是一個(gè)系統(tǒng),所以需要將所有的C文件二進(jìn)制代碼鏈接到一起,形成一個(gè)工程的可執(zhí)行文件。 綜上,編譯和鏈接就是指的將C文件轉(zhuǎn)變成二進(jìn)制代碼,并將各個(gè)獨(dú)立的C文件二進(jìn)制代碼鏈接到一起,形成一個(gè)可執(zhí)行文件的過程。
c語言是怎樣編譯成可執(zhí)行文件的?
c語言運(yùn)行方式如下:上機(jī)輸入和編譯源程序。通過鍵盤向計(jì)算機(jī)輸入程序,最后將此源程序以文件形式存放在文件夾內(nèi),文件用.c作為后綴,生成源程序文件。對(duì)源程序進(jìn)行編譯,先用c編譯系統(tǒng)提供的“預(yù)處理器”對(duì)程序中的預(yù)處理指令進(jìn)行編譯預(yù)處理。例如,對(duì)于#include
編譯的作用是對(duì)源程序進(jìn)行檢查,判定程序有無語法的錯(cuò)誤。直到?jīng)]有錯(cuò)誤時(shí),編譯程序自動(dòng)把源程序轉(zhuǎn)換為二進(jìn)制形式的目標(biāo)程序進(jìn)行連接處理。經(jīng)過編譯后所得到的二進(jìn)制目標(biāo)文件還不能供計(jì)算機(jī)直接執(zhí)行。一個(gè)程序可能包含若干個(gè)源程序文件,而一次編譯只能得到與一個(gè)源程序文件相對(duì)應(yīng)的目標(biāo)文件,
只是程序的一部分,必須把所有編譯后得到的目標(biāo)文件鏈接裝配起來,再與函數(shù)庫相連接成一個(gè)整體,生成一個(gè)可供計(jì)算機(jī)執(zhí)行的目標(biāo)程序,稱為可執(zhí)行程序,即使一個(gè)程序只包含一個(gè)源文件,編譯后得到的目標(biāo)程序也不能直接運(yùn)行,也要經(jīng)過連接階段,因?yàn)橐秃瘮?shù)庫進(jìn)行連接,才能生成可執(zhí)行程序。運(yùn)行可執(zhí)行程序,得到運(yùn)行結(jié)果。把f.exe輸入計(jì)算機(jī),并使之運(yùn)行,得到結(jié)果。
一個(gè)源程序(.c)變成可執(zhí)行(.exe)文件要經(jīng)過幾個(gè)步驟?詳細(xì)一點(diǎn)
以GCC編譯器為例,可以分為四步。第一步是預(yù)處理,包括語法檢查等工作。
gcc
-P
abc.c
第二步由源程序生產(chǎn)匯編語言代碼。
gcc
-S
abc.c
會(huì)生成abc.s文件,這個(gè)文件里就是匯編代碼。
第三步編譯器生成目標(biāo)代碼,一個(gè)源文件生成一個(gè)目標(biāo)代碼。
gcc
-c
abc.c
會(huì)生成abc.o
第四步連接器從目標(biāo)代碼生成可執(zhí)行文件。
目標(biāo)代碼包括機(jī)器碼和符號(hào)表(函數(shù)及變量名)。連接器的主要作用是通過符號(hào)表在庫文件和其他模塊中找到在目標(biāo)代碼中引入或未定義的符號(hào)(函數(shù)及變量名),將幾個(gè)目標(biāo)代碼合成可執(zhí)行文件。
以上就是關(guān)于c語言生成可執(zhí)行程序的過程相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
課程設(shè)計(jì)的心得(C語言課程設(shè)計(jì)的心得)