源代碼生成可執(zhí)行程序過程(編程程序直接生成可執(zhí)行文件)
本篇文章給大家談談源代碼生成可執(zhí)行程序過程,以及編程程序直接生成可執(zhí)行文件對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、把高級語言編寫的源程序轉換為可執(zhí)行程序的過程叫什么?
- 2、C語言源程序到運行程序經(jīng)過哪幾個步驟
- 3、一個源程序(.c)變成可執(zhí)行(.exe)文件要經(jīng)過幾個步驟?詳細一點
把高級語言編寫的源程序轉換為可執(zhí)行程序的過程叫什么?
高級語言轉換為可執(zhí)行程序的過程叫編譯,主要有以下幾個過程:
1、預編譯,處理頭文件及查錯(語法錯誤);
2、編譯,把預處理過的文件編譯成目標代碼;
3、鏈接,把所有的目標代碼鏈接成可執(zhí)行文件。
C語言源程序到運行程序經(jīng)過哪幾個步驟
1、預處理
在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內(nèi)容替換掉語句本身,所有已定義的宏被展開。
根據(jù)#ifdef,#if等語句的條件是否成立取舍相應的部分,預處理之后源碼中不再包含任何預處理語句。
GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c
2、編譯
這一階段,編譯器對源碼進行詞法分析、語法分析、優(yōu)化等操作,最后生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。
可以通過選項-S使GCC在進行完編譯后停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c
3、匯編
這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在后綴為.o的目標文件中。
當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件后,才能進入下一步的鏈接工作。
目標文件已經(jīng)是最終程序的某一部分了,只是在鏈接之前還不能執(zhí)行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c
4、鏈接
經(jīng)過匯編以后的機器代碼還不能直接運行。為了使操作系統(tǒng)能夠正確加載可執(zhí)行文件,文件中必須包含固定格式的信息頭,還必須與系統(tǒng)提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c
5、運行:執(zhí)行.EXE文件,得到運行結果。
一個源程序(.c)變成可執(zhí)行(.exe)文件要經(jīng)過幾個步驟?詳細一點
以GCC編譯器為例,可以分為四步。
第一步是預處理,包括語法檢查等工作。
gcc
-P
abc.c
第二步由源程序生產(chǎn)匯編語言代碼。
gcc
-S
abc.c
會生成abc.s文件,這個文件里就是匯編代碼。
第三步編譯器生成目標代碼,一個源文件生成一個目標代碼。
gcc
-c
abc.c
會生成abc.o
第四步連接器從目標代碼生成可執(zhí)行文件。
目標代碼包括機器碼和符號表(函數(shù)及變量名)。連接器的主要作用是通過符號表在庫文件和其他模塊中找到在目標代碼中引入或未定義的符號(函數(shù)及變量名),將幾個目標代碼合成可執(zhí)行文件。
關于源代碼生成可執(zhí)行程序過程和編程程序直接生成可執(zhí)行文件的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
掃描二維碼推送至手機訪問。
版權聲明:本文由飛速云SEO網(wǎng)絡優(yōu)化推廣發(fā)布,如需轉載請注明出處。