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

2021-07-13 01:41:59 字數 636 閱讀 5074

2.1 被隱藏了的過程

通常整合開發環境(ide)會將編譯和鏈結的過程一步完成,稱為構建(build)。即時使用命令列來編譯乙個源**檔案,簡單地一句「gcc hello.c」命令實際上也包含了非常複雜的過程。

乙個gcc過程可以分解為4個步驟,分別是預處理(prepressing)、編譯(compilation)、彙編(assembly)和鏈結(linking)

2.1.1 預編譯

首先是源**檔案hello.c和相關的標頭檔案,如stdio.h等被預編譯器cpp預編譯成乙個.i檔案。對於c++程式來說,它的源**檔案的副檔名可能是.cpp或.cxx,標頭檔案的副檔名可能是.hpp,而預編譯後的副檔名是.ii。

第一步預編譯的過程相當於如下命令(-e表示只進行預編譯):

$ gcc -e hello.c -o hello.i

`或者:`

$cpp hello.c > hello.i

預編譯過程主要處理那些源**檔案中的以「#」開始的預編譯指令,比如「#include」、「#define」等,主要處理規則如下:

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

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...

裝載 鏈結與庫

第五部分 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...