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