c語言的編譯過程,C語言的編譯過程

2021-05-04 20:28:21 字數 3904 閱讀 6384

1樓:千鋒教育

c編譯的整個過程很複雜,大致可以分為以下四個階段:

預處理階段在該階段主要完成對源**的預處理工作,主要包括對巨集定義指令,標頭檔案包含指令,預定義指令和特殊字元的處理,如對巨集定義的替換以及檔案頭中所包含的檔案中預定義**的替換等,總之這步主要完成一些替換工作,輸出是同原始檔含義相同但內容不同的檔案。

編譯、優化階段編譯就是將第一階段處理得到的檔案通過詞法語法分析等轉換為組合語言。優化包括對中間**的優化,如刪除公共表示式,迴圈優化等;和對目標**的生成進行的優化,如如何充分利用機器的暫存器存放有關變數的值,以減少記憶體訪問次數。

彙編階段將組合語言翻譯成機器指令。

連結階段連結階段的主要工作是將有關的目標檔案連線起來,即將在一個檔案中引用的符號同該符號在另外一個檔案中的定義連線起來,使得所有的目標檔案成為一個能夠被作業系統裝入執行的統一整體。

2樓:飛翔的斑馬魚

一般是1、預編譯,對源**的巨集進行替換,生成中間檔案(文字,預設不保留)。

2、翻譯為彙編**(文字,預設不保留)。

3、由彙編器生成二進位制檔案(.obj)。

4、連線為可執行檔案。

因為前兩步一般不保留中間檔案,所以你看到的是編譯器「直接」編譯成了.obj檔案。

c語言源程式到執行程式經過哪幾個步驟

3樓:

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的目標檔案中。

4、連結

經過彙編以後的機器**還不能直接執行。為了使作業系統能夠正確載入可執行檔案,檔案中必須包含固定格式的資訊頭,還必須與系統提供的啟動**連結起來才能正常執行,這些工作都是由連結器來完成的。gcc -o hello hello.

c5、執行:執行.exe檔案,得到執行結果。

4樓:深天零距離

預處理階段:前處理器(cpp)根據以字元#開頭的命令,修改原始的c程式。比如hello.

c中第一行的#include命令告訴前處理器讀取系統標頭檔案stdio.h的內容,並把它直接插入程式文字中,結果就得到了另一個c程式,通常是以.i作為副檔名。

編譯階段:編譯器(ccl)將文字檔案hello.i翻譯成文字檔案hello.

s,它包含一個組合語言程式。組合語言程式中的每條語句都以一種標準的文字格式確切的描述了一條低階機器語言指令。

彙編階段:彙編器(as)將hello.s翻譯成機器語言指令,把這些指令打包成一種可重定位目標程式的格式,並將結果儲存在目標檔案hello.

o中。hello.o檔案是一個二進位制檔案,它的位元組編碼是機器語言指令而不是字元,如果我們在文字檔案中開啟hello.

o檔案,看到的將是一堆亂碼。

連結階段:連結器(ld)負責處理合並目標**,生成一個可執行目標檔案,可以被載入到記憶體中,由系統執行

5樓:

c語言經過編譯成彙編程式 ,編譯得到的組合語言通過彙編器(assembler)再彙編成可重定位目標程式

6樓:刀無極啊

四個步驟

預處理 編譯 彙編 連結

詳情

7樓:匿名使用者

連結,編譯,除錯,執行

c語言編寫好**後,怎麼編譯,最後生成可執行檔案?

8樓:南京西潤學堂

c語言bai最終想執行,必須轉為du彙編,再由彙編轉為機zhi器碼dao,也就是所謂的01之類的。

所以想執行,要使內用編譯器,把寫好的____c_代_碼_翻_譯_為_匯_編____,再到機器碼。

一樣的c語言,想在不同的平臺上使用(x86、arm、mips等),所對應的機器碼也不同。所容以編譯器也不一樣,常用的編譯器有gcc、vs等。

ps:系統讓返回修改

9樓:晨曦月殤

c語言編寫好**後,怎麼編譯,用vc++編譯器,學習怎

麼用這個軟體建立工程,

10樓:stop桀

左一按鈕編譯,左二生成可執行檔案,!執行

11樓:江城子

編譯器都有編譯的功能啊,會自動生成exe檔案

12樓:匿名使用者

直接下個codeblocks就ok啦

開發一個c語言程式要經過哪四個步驟

13樓:匿名使用者

開發一個c語言程式需要經過的四個步驟:編輯、編譯、連線、執行。

c語言程式可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的c語言編譯器和庫,然後將c源**編譯、連線成目標二進位制檔案之後即可執行。

1、預處理:輸入源程式並儲存(.c檔案)。

2、編譯:將源程式翻譯為目標檔案(.obj檔案)。

4、執行:執行.exe檔案,得到執行結果。

14樓:北京泗洪人

大體上可以分為以下步驟:

架構設計

原始碼開發

編譯測試

**提交

15樓:趙祖龍

除錯程式

連結處理

執行程式

16樓:匿名使用者

1 寫**。這是最基礎的一步,即實現c語言的原始檔(.c,必需),和可能的標頭檔案(.h,非必需)。

2 編譯。將編寫好的**,通過編譯工具,轉換為目標檔案。此步中,會對檔案內部及包含的標頭檔案進行語法語義的分析檢查。如果出錯,則必須返回到1步對**進行修改,直到沒有錯誤為止。

3 連結。將目標檔案連結成可執行檔案。此步會對檔案直接的關聯進行檢查。如果出錯需要返回到1修改**。直到沒有錯誤。

4 執行。這個是最後一步,也是c語言的最終目的。

在執行結果與期望不符時,需要檢查原因,修改**,重新執行1,2,3直到程式沒有問題。

17樓:燈光不再亮

確定需求,也就是你開發的東西是拿來幹什麼的,有什麼功能編碼階段,也就是俗稱的擼碼了,,

編碼完成後,自己執行看看有沒有bug;

把程式打包,上傳到伺服器,釋出出去

具體開發當然還有許多細節,但是大致的步驟基本一樣,純手打,望採納

18樓:熱情的流浪喵喵

編寫,編譯,連線,執行

19樓:緩緩掉落的松針

問題分析

演算法設計

程式編寫

執行維護

20樓:匿名使用者

提供《計算機考試題庫》的答案(填空):

開發—個c語言程式需要經過______、______、______和______四個基本過程。

答案:編輯 編譯 連線 執行

擴充解釋:

常見的c語言編譯器是什麼,常見的C語言編譯器是什麼?

1.c語言程式設計軟體有哪些 mcrosoft visual c microsoft visual studio dev c code blocks borland c watcom c borland c builder gnu djgpp c lccwin32 c compiler3.1 hig...

c語言編譯提示No such file or directory

由這個錯誤報的路徑f cwmp tr069 tr 069 server valpha d link tr 069 server valpha d link acs server include start stop.h可以知道程式標頭檔案包含出現了問題了。因為標頭檔案根本就不存在,所以會出現這樣的錯...

ubuntu下如何編譯c語言,ubuntu下如何編譯C語言

1 首先開啟ubnutu開發環境,直接輸入組合鍵ctrl alt t調出命令列介面。2 需要在當前目錄下建立一個main.c檔案。通過命令touch main.c就可以直接建立該檔案。要檢視建立是否成功,直接通過命令ls檢視即可。3 建立完main.c檔案後,需要進行編寫檔案。ubuntu下提供了一...