2010-09-30 217 views

回答

57

編譯器將用人類可讀的編程語言編寫的代碼轉換爲您的處理器可以理解的機器代碼表示。此步驟會創建對象文件。

一旦這個步驟由編譯器完成,需要另一個步驟來創建一個可執行的可執行文件,該文件可以被調用並運行,即將編譯後的代碼需要調用的函數調用(例如)工作。例如,您的代碼可以調用sprintf,這是C標準庫中的一個例程。你的代碼沒有任何提供sprintf提供的實際服務,它只是報告它必須被調用,但實際代碼駐留在公共C庫中的某處。要執行此(和許多其他)鏈接,必須調用鏈接器。鏈接後,您將獲得可運行的實際可執行文件。

+20

+1很好的解釋。請注意,在大多數操作系統中,實際上有兩個*鏈接器:編譯後生成可執行文件(通常稱爲「鏈接器」)的鏈接器,以及鏈接到動態加載庫(也稱爲.so或。 DLL)在執行時(通常稱爲「動態鏈接器」)。 – sleske 2010-09-30 14:14:07

19

編譯器從源代碼生成目標代碼文件(機器語言)。

A linker將這些目標代碼文件組合成可執行文件。

許多IDE都會連續調用它們,所以您絕對不會看到鏈接器在工作。有些語言/編譯器沒有獨特的鏈接器,鏈接由編譯器完成,作爲其工作的一部分。

相關問題