程式編譯的四個階段

2022-05-04 19:30:26 字數 836 閱讀 2271

預處理將標頭檔案展開,將巨集定義替換,生成符號檔案.s

編譯則包含了詞法檢查,語法檢查,許可權檢查, **優化

組裝:將編譯後的**組裝成機器碼, 形成位置無關的目標檔案 .o

鏈結將多個位置無關的目標檔案合併成可執行檔案

可見組裝才是平台相關的,之前的操作都與平台無關, 換句話說是編譯前端和編譯後端

乙個類的成員變數修改了訪問控制符,在另外乙個檔案被引用,是否必須編譯修改的檔案才能鏈結成功?

答案是不需要

例如我們有 abc.hpp abc.cpp 定義了乙個class

class a ;
在main.cpp 中有引用

int main()
這樣是可以編譯成功

# 生成main.o abc.o

g++ -c main.cpp abc.cpp

# 鏈結

g++ -o main main.o abc.o

# 成功

然後修改public為private 重新編譯abc

g++ -c abc.cpp

# 重新鏈結

g++ -o main main.o abc.o

#成功!且可以執行

但是重新編譯main.cpp

g++ -c main.cpp 

#失敗,提示無法訪問private成員

可見,訪問許可權是在編譯期檢查的, 編譯成目標檔案後,就不會去檢查了

編譯成目標檔案或者庫檔案後, 不會再去檢查許可權位了, 執行時照樣可以訪問

gcc編譯的四個階段

gcc編譯的四個階段 如下圖 e preprocess only do not compile,assemble or link 只預處理,不會編譯 彙編 鏈結 s compile only do not assemble or link 只編譯,不會彙編 鏈結 c compile and asse...

GCC編譯的四個階段

gcc編譯流程分為4個步驟,分別為 預處理 pre processing 編譯 compiling 彙編 assembling 鏈結 linking 1 預處理階段 在該階段,編譯器將上述 中的stdio.h編譯進來,並且使用者可以使用gcc的選項 e 進行檢視,該選項的作用是把源 進行預處理。預處...

GCC編譯程式時的四個階段說明!

在使用gcc進行程式的編譯時通常要經歷四個階段 通常指的是從源程式到可執行的二進位制 這整個過程 一些以hello.c為例來說明這四個階段。hello.c includeint main gcc的四個階段如下 1.預處理階段 2.編譯階段 3.彙編階段 4.鏈結階段 四個階段的詳細資訊如下 1.預處...