C C 源程式到可執行程式exe的全過程

2022-09-10 07:30:09 字數 796 閱讀 2214

本文參考了部落格,其位址如下:

原始檔生成可執行檔案的過程總共是經歷了預處理、編譯、彙編、鏈結四個過程。

源程式(source code)→預處理器(preprocessor)→編譯器(compiler)→匯程式設計序(assembler)→目標程式(object code)→聯結器(鏈結器,linker)→可執行程式(executables

主要作用:

刪除 #define ,展開所有巨集定義

處理條件預編譯

處理#include,將標頭檔案插入對應位置

刪除所有注釋

新增行號和檔案識別符號,用於顯示除錯資訊:錯誤或警告的位置

保留 #pragma 編譯器指令。設定編譯器狀態;指示編譯器完成一些特定的動作

對預處理後的檔案進行語法分析,詞法分析,語義分析,符號彙總,然後生成 .s 檔案,得到的是彙編**。

將彙編**轉成二進位制檔案。另外,會形成符號表,給這些符號分配虛擬位址。

把二進位制檔案鏈結成乙個可執行的指令

鏈結所完成的任務是合併段表,然後把符號表合併並且對符號表進行重定位。

所謂合併段表,源**編譯生成的 a.out 會包含很多段,資料段,文字段,bss段等,編譯過程中,不同的資料會對應到不同的段中, 在 .o 檔案中就已經有了分段

所謂符號表合併和重定位是說最後只有乙個符號表,這個符號表是由前面彙編形成的多個符號表進行合併。在這裡不在同乙個符號表的符號,要對他們進行重定位。

關於源程式到可執行程式的過程

源程式,是指未經編譯的,按照一定的程式語言規範書寫的,人類可讀的文字檔案,我們通常理解為源程式就是我們所寫好的 可執行程式,我們常說的.exe程式,可以執行程式,完成計算機功能。在c語言中,c檔案就是所謂的原始檔,接下來,我們剖析一下,源程式到可執行程式的過程。在這個過程中,會發生如下的變化 c檔案...

關於源程式到可執行程式的過程

源程式,是指未經編譯的,依照一定的程式語言規範書寫的,人類可讀的文字檔案,我們通常理解為源程式就是我們所寫好的 可執行程式。我們常說的.exe程式,能夠執行程式。完畢計算機功能。在c語言中,c檔案就是所謂的原始檔,接下來,我們剖析一下,源程式到可執行程式的過程。在這個過程中。會發生例如以下的變化 c...

手動製作python的exe可執行程式

手動製作python的exe可執行程式 by leo jay python沒有內建乙個編譯為exe的功能。給python程式的部署帶來不少的麻煩。所以就會出現一些py2exe之類的很不錯的工具,用於自動把.py檔案編譯為.exe檔案。最近抽空研究了一下手動實現類似py2exe的功能,希望加強對pyt...