C 知識點分享004 理解編譯過程

2021-08-26 20:53:34 字數 632 閱讀 4371

該文章原創於qter開源社群(www.qter.org)

課程目錄:《c++老鳥日記》目錄

本套課程屬於:《c++跨平台開發乾貨》系列課程。

編譯器的基本編譯過程如下:

1, 讀取工程:讀取並解析工程檔案。一般為makefile或者makefile.debug、makefile.release。

2, 編譯檔案:遍歷解析工程所包含的所有檔案並編譯(一般分兩邊進行),生成目標檔案(.obj)。第一遍編譯對預處理過的**進行語法分析生成語法分析樹,第二遍由**生成器遍歷語法分析樹,把樹的每個節點轉換成組合語言或機器**。如果生成的是組合語言,那麼還必須用彙編器對其彙編。

其中編譯過程可能根據需要,先進行預編譯,也就是對於一些不太會變動的檔案進行編譯,這樣就無需在每次引用到這些檔案時都進行編譯,僅需要一次預先編譯就好。否則,每次碰到這個檔案都編譯,將使得整個工程的編譯時間拖長。

對於編譯過程和鏈結過程,都有可能產生錯誤,編譯時產生的錯誤叫編譯錯誤。鏈結時產生的錯誤叫鏈結錯誤。

早期的編譯器只能產生機器**,要知道程式的狀態還要插入列印語句。現代編譯器可以在程式中插入與源**有關的資訊,由源**層偵錯程式使用,以便通過跟蹤程式經過源**的進展來顯示程式的執**況。

參考資料:《c++程式設計思想》中文版:2.1.2章節。

編譯過程知識點 筆記

編譯過程分為4段 注 現在版本的gcc把預處理和編譯兩個步驟合成乙個步驟,用cc1工具來完成。gcc其實是後台程式的一些包裝,根據不同引數去呼叫其他的實際處理程式,比如 預編譯編譯程式cc1 彙編器as 聯結器ld 1.預處理.c i 預處理的過程主要處理包括以下過程 命令實現 用gcc的 e命令實...

C 知識點分享003 基本的開發過程

該文章原創於qter開源社群 www.qter.org 課程目錄 c 老鳥日記 目錄 本套課程屬於 c 跨平台開發乾貨 系列課程。不論採用哪種程式語言,軟體的研發過程大致是一樣的。都要經過需求 分析 設計 架構設計 詳細設計 編碼實現 測試 上線的過程。現在,越來越多的公司或團隊採用敏捷開發過程而非...

儲存過程知識點!

2011年9月 14日 星期二 一 建立儲存過程 1 基本應用 語法格式 create database create table 儲存函式 每條語句的結束 宣告新的結束符 任選,避免在 mysql 環境下有特殊含義 delimiter 分隔符 delimiter delimiter create ...