C 鏈結與裝載

2022-08-17 06:18:25 字數 714 閱讀 8732

1、.obj檔案的內部結構

2、對映到程序虛擬空間

3、鏈結的原理

c++ code 12

3456

7891、未解決符號表:提供了所有在該編譯單元裡引用但是定義並不在本編譯單元裡的符號及其出現的位址。 

2、匯出符號表提供了本編譯單元具有定義,並且願意提供給其他編譯單元使用的符號及其位址。 

3、位址重定向表提供了本編譯單元所有對自身位址的引用的記錄。 

4、段表決定elf檔案的段結構

1、決定各個目標檔案在最終可執行檔案裡的位置。

2、訪問所有目標檔案的位址重定向表,對其中記錄的位址進行重定向(即加上該編譯 單元實際在可執行檔案裡的起始位址)。

3、遍歷所有目標檔案的未解決符號表,並且在所有的匯出符號表裡查詢匹配的符號,並在未解決符號表中所記錄的位置上 填寫實際的位址

(也要加上擁有該符號定義的編譯單元實際在可執行檔案裡的起始位址)。

4、個人見解

來自為知筆記(wiz)

裝載 鏈結與庫

第五部分 windows動態鏈結 1 dll函式和變數必須在檔案顯示是匯入還是匯出,declspec dllexport 匯出,declspec dllimport 匯入.建立dll檔案的時候.c檔案生成.dll,lib,exp檔案,然後用.lib檔案和exe中的.c檔案生成的目標檔案鏈結在一起,生...

程式鏈結與裝載

程式的執行需要執行環境支撐,其執行環境一般由記憶體 執行庫和系統呼叫構成。其中系統呼叫部分程度上充當的是程式與核心進行互動的中介。其中首先需明白,程式與記憶體關係。記憶體是承載程式執行的介質,也是程式進行各種運算和表達的場所。window在預設情況下會將高位址的 2g 空間分配給核心 4g記憶體情況...

鏈結 裝載與庫

鏈結 裝載與庫 在linux下,當我們使用 gcc來編譯 helloword 程式時,只需要 gcc hello.c a.out hello world 其中實際包括4步驟 預處理 prepressinng 編譯 compliation 彙編 assembly 鏈結 linking 1.預編譯 gc...