鏈結 裝載與庫 2 編譯和鏈結

2021-10-19 12:13:23 字數 543 閱讀 1528

1)預處理

主要的處理規則如下:

gcc -e hello.c -o hello.i   //-e表示只進行預編譯
2)編譯

將預處理完的檔案進行一系列的詞法分析、語法分析、語義分析和**優化。

gcc -s hello.c -o hello.s  //
3)彙編

將彙編**轉換成機器碼

gcc -c hello.s -o hello.o
4)鏈結

將許多目標檔案.o鏈結起來,才能得到可執行的out檔案

ld -static crt1.o crti.o crtbegint.o hello.o -start-group -lgcc -lgcc -lgcc_eh -lc -end-group cr
例如,有個全域性變數var,它在目標檔案a裡面。我們在目標檔案b裡面要訪問var:

mov1 $0x2a, var

鏈結 裝載與庫(2) 編譯和鏈結2 1

2.1 被隱藏了的過程 通常整合開發環境 ide 會將編譯和鏈結的過程一步完成,稱為構建 build 即時使用命令列來編譯乙個源 檔案,簡單地一句 gcc hello.c 命令實際上也包含了非常複雜的過程。乙個gcc過程可以分解為4個步驟,分別是預處理 prepressing 編譯 compilat...

裝載 鏈結與庫

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

鏈結 裝載與庫

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