1. 在C語言中,完成C源文件編輯後到生成執行文件的步驟是什麼
在C語言中,完成C源文件編輯後到生成執行文件的步驟是:
預編譯
處理有#標識的代碼,如將include的文件進行拷貝、#define的條件編譯等等!
編譯
編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編,對目標代碼的生成進行的優化,翻譯成機器指令。生成的文件叫目標文件。
鏈接
把目標文件和所需要的庫,鏈接成為可執行文件。
2. 一個源程序(.c)變成可執行(.exe)文件要經過幾個步驟詳細一點
以GCC編譯器為例,可以分為四步。
第一步是預處理,包括語法檢查等工作。
gcc
-P
abc.c
第二步由源程序生產匯編語言代碼。
gcc
-S
abc.c
會生成abc.s文件,這個文件里就是匯編代碼。
第三步編譯器生成目標代碼,一個源文件生成一個目標代碼。
gcc
-c
abc.c
會生成abc.o
第四步連接器從目標代碼生成可執行文件。
目標代碼包括機器碼和符號表(函數及變數名)。連接器的主要作用是通過符號表在庫文件和其他模塊中找到在目標代碼中引入或未定義的符號(函數及變數名),將幾個目標代碼合成可執行文件。
3. C語言源程序到運行程序經過哪幾個步驟
1、預處理
在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。
根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。
GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c
2、編譯
這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。
可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c
3、匯編
這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。
當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。
目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c
4、鏈接
經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c
5、運行:執行.EXE文件,得到運行結果。
4. C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(4)編譯源文件生成可執行文件過程擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
5. 把高級語言編寫的源程序轉換為可執行程序的過程叫什麼
這個過程有兩個叫法,編譯或者解釋。
有些高級語言在把源程序轉換為可執行程序的時候,需要先對完整的源程序做詞法分析、語法分析等一系列檢測,所有語法都沒有問題後,一次性把所有源代碼翻譯成機器碼,這要求源程序中不能有任何語法錯誤,否則將不會生成可執行程序,直到所有語法錯誤都改正,這種轉換的方式稱為編譯,C、C++等語言就是採用了編譯方式。
還有些高級語言在把源程序轉換為可執行程序的時候,一句話一句話的轉換,翻譯一行執行一行,如果遇到某一行出現了語法錯誤,程序將停止在出現錯誤的地方,程序員可以修改,然後繼續執行,這種轉換方式稱為解釋,VB、早期的Java都是採用解釋方式。
兩種方式各有利弊,編譯的方式對於程序員要求較高,源代碼中不能出現任何錯誤,最終的程序才能執行,但一旦通過了編譯,則生成的可執行代碼執行效率會很高;而解釋方式可以邊寫代碼邊調試,但執行的效率較低。
6. 如何將編寫好的C語言源程序變成可執行文件EXE
從網上轉來的
編譯
F5
使用Turbo
C來調試C程序的示例:
1、首先打開turboc,方法很簡單啦:找到turboc所在目錄,然後雙擊TC.exe。
2、然後會出現一個窗口,使用Alt+F組合鍵打開菜單選擇New選項回車新建文件
3、然後輸入c語言源程序(這里特別注意要細心,千萬不要輸錯了)
4、好當很長很長的源程序輸入完以後(雖然很多同學剛剛接觸c語言,還不知道自己輸了半天輸的是什麼)接一下檢查一下自己輸入的程序是否語法正確,然後使用Alt+R組合鍵打開菜單選擇Run選項回車,也就是運行選項(主要是看看輸了半天的程序在計算機當中運行是個什麼東東)
5、好像沒有什麼表示嗎,不要著急不是計算機出了問題,這個時候用Alt+R組合鍵選擇User
Scren選項回車
6、怎麼樣是不是有結果了.
7、好一個程序調試完畢我們需要保存一下我們辛苦勞動的結果,用Alt+F組合鍵選擇Save選項回車保存我們的程序(注意保存的目錄和文件名,文件名要以擴展名.c結尾)
7. 如何將編寫好的C語言源程序變成可執行文件EXE
1、第一步,打開C語言編譯軟體,輸入你要執行的程序源代碼,如下圖所示。
8. 可執行文件的開發過程
在DOS下,生成一個可執行文件的步驟比較簡單,用編譯器將源程序編譯為obj文件,再用鏈接器將obj文件鏈接成exe文件,不同語言的開發過程都差不多。
DOS可執行文件中的內容是由源程序中所寫的代碼和數據定義轉換而來的。惟一的例外是帶覆蓋部分(Overlay)的exe文件,它在基本的exe文件後附加了一些自定義的數據,其中可執行部分的長度由文件頭偏移0002h和0004h中的長度給出,該長度之後到文件實際長度這部分就是Overlay部分。這樣,即使一個帶覆蓋的exe文件大小遠遠超過640 KB,在DOS下也能運行,因為操作系統只裝入真正的可執行部分,然後由程序自己去讀取覆蓋部分的數據。一些打包軟體生成的奇大無比的自解壓包就採用這種結構,可執行部分是解包代碼,覆蓋部分是被壓縮的數據。DOS對可執行文件覆蓋部分的數據格式並沒有規定,它是程序員按自己的方式組織的。如果程序員願意,也可以把這些數據單獨放在另外一個文件中。
Win32可執行文件叫做PE文件。PE文件的基本結構和DOS可執行文件有很大的不同。它把程序中的不同部分分成各種節區(Section),其中可以有一個節區是放置各種資源的,如菜單、對話框、點陣圖、游標、圖標和聲音等。雖然可以把資源部分理解成類似DOS可執行文件中的「覆蓋」部分,但由於資源是Win32可執行文件的標准組成部分,而且是非常重要的組成部分,它的格式是固定的。所以與DOS軟體的開發過程相比,Win32軟體的開發中多了一個創建資源文件的步驟。
以使用MASM32軟體包為例,在用Win32匯編開發軟體的流程中,程序員要做的工作分創建代碼和創建資源兩部分,如圖2.1所示。
代碼部分的開發工作與DOS下寫代碼的步驟是一樣的。程序員用文本編輯器書寫匯編源代碼(*.asm文件)。與C源代碼類似,asm文件中也可以用include語句包含數據定義和函數聲明的頭文件,Win32匯編的頭文件一般用inc作擴展名。大部分的include文件是編譯器軟體包附帶提供的,如MASM32軟體包附帶的Windows.inc文件定義了Win32 API中很多參數和數據結構,其他的inc文件則是不同DLL中的Win32 API函數聲明。最後,asm文件經匯編編譯器編譯成以obj為擴展名的目標文件。
資源文件中可以包括對話框、快捷鍵、菜單、字元串、版本信息和一些圖形資源等內容。資源文件的源文件是一種類似「腳本」的文本文件,它的擴展名一般為rc,其中用不同的語法定義了不同類型的資源,資源腳本文件最後由資源編譯器編譯成資源文件*.res。資源腳本文件同樣用到很多預定義值,所以軟體包中一般也包括資源頭文件供源文件來導入。MASM32軟體包中的資源頭文件是Resource.h。
在資源文件中,不同類型資源的記錄方式是不同的。對話框資源只記錄定義值,如對話框的大小、位置等,並非真正存儲對話框最後顯示在屏幕上的像素。這些大小、位置等信息最後由Windows解釋後才在屏幕上被繪畫成像素;菜單、字元串、快捷鍵等由文本構成;圖形資源則真正由像素組成,它們在資源腳本中被定義為一個文件名,由資源編譯器從磁碟文件導入。Windows在資源中支持的圖形文件有bmp點陣圖文件、cur游標文件和ico圖標文件,這些圖形文件可以用其他圖形處理軟體生成。另外,wav聲音文件也可以用在資源中。創建資源的方法在第5章中有詳細的描述。
編譯好目標文件*.obj和資源文件*.res後,最後一步是用鏈接器將它們鏈接成可執行文件。鏈接的時候要用到函數庫。在DOS環境下編程的時候,使用的函數庫是靜態庫。靜態庫是一些已經編譯好的代碼模塊。當用戶在源程序中用到某個函數的時候,鏈接器從庫文件中將這個函數的二進制代碼取出,與obj文件合在一起生成最終的exe文件。但在Win32環境下,大部分的公用函數封裝在DLL文件中,以動態鏈接的方式供用戶程序調用。這時候庫文件中只需要包含函數在DLL中的位置信息,不再需要有二進制代碼部分。所以鏈接的時候也只是把庫文件中的位置信息取出放入最後的可執行文件中。Win32中這種只包含位置信息的庫文件稱為導入庫。
9. 一個軟體從源代碼到可執行程序,需要經歷幾個步驟的
一般經過編譯程序編譯後就可以直接執行了。
編譯程序一般有兩種執行方式:一種是邊解釋邊執行,一次將一條指令通過編譯程序編譯成機器代碼後執行,然後再編譯下一條指令,此種方式必須通過編譯程序來協助完成;另外一種是通過編譯程序直接將程序源代碼直接編輯成可執行文件,可執行文件可獨立執行,用不著編譯程序了。
10. C語言編寫好代碼後,怎麼編譯,最後生成可執行文件
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。