原始檔在編譯器中的處理過程

2021-07-24 14:44:19 字數 553 閱讀 9238

預處理:

1.只進行預處理操作 gcc -e demo.c > demo2.i 

大於號的作用是把進行預處理操作後生成的.i檔案放到大於號後面的檔案裡面,稱作重定向。 經過預處理之後的檔案字尾名為.i

2.預處理做的事情包括:標頭檔案展開、巨集替換、條件編譯

條件編譯在實際應用中非常多,通過條件編譯可以選擇編譯**的一部分,是大段注釋的技巧  例如:#if 1 & #if 0

另外大段注釋的技巧還有 /*   */

3.絕對路徑 cd/user/include 是系統頭檔案目錄

:尖括號包含的是系統的頭檔案目錄,如果找不到就報錯

「stdio.h」:雙引號下包含的標頭檔案 ,先在當前的.c目錄下找,找不到就到系統的頭檔案目錄下找,再找不到就報錯。 

編譯:gcc -c demo.c

到編譯這個步驟停止,編譯後會生成demo.o檔案 編譯生成的目標檔案字尾名是.o

編譯階段做的事情是語法檢查、詞法分析

彙編:gcc -s demo.c

執行到彙編截止,生成彙編檔案demo.s   .s是彙編檔案的字尾

gcc編譯器的具體處理過程

我們在linux中編譯c 的時候,都會使用gcc c o 可是這一條簡簡單單的命令後隱藏著什麼呢?在輸入這條命令,敲擊回車之後有發生了什麼呢?1,預編譯,我們在寫程式的時候一般會使用include,會使用巨集定義define,使用編譯選項。這些語句的處理都是在預編譯的時候解決的。具體來講,預編譯刪除...

編譯器對原始檔編碼的處理

漢字 gbk編碼 ba ba d7 d6 utf 8編碼 e6 b1 89,e5 ad 97 utf 16be編碼 6c 49,5b 57 兩種常用編譯器gcc,cl中對unicode字面值的實現 gcc中跟編碼方式轉換有關的三個編譯選項 有了以上鋪墊,下面兩條語句的意義就很清楚了 cpp view...

理解編譯器在編譯過程中做了什麼

今年開了作業系統課,課上老師提了乙個問題 從乙個儲存程式 的文字檔案到可執行的程式,編譯器做了啥?由於之前買過 深入了解計算機系統 這本書,剛買來時受熱就翻了其中一部分章節,其中就有講到上述所問的講解,索性就參考其上的講解寫出來 我會以乙個hello.c的c程式貫穿整個文章,具體 如下 includ...