首先回顧一下連接器(linker)的基礎知識:編譯器首先創(chuàng)建一個輸出文件。在這個輸出文件中包含了一個可重定位的對象,這個對象就是與源程序對應的數(shù)據(jù)和機器指令。
連接器位于 編譯器的哪一個階段 ?
絕大數(shù)的編譯器并不是一個單一的龐大的程序,而是由六,七個小程序組成的。這些小的程序是由一個叫做“編譯器驅動器控制器的程序”來調用的。這些組成編譯器的程序有:編譯預處理器( preprocesser),語法語義檢查器(syntactic and semantic checker ),代碼生成器(code genrator),匯編程序,優(yōu)化器,連接器,當然還包括一個調用各個程序并向各個程序傳遞正確選項的驅動器程序(driver  progarm).
動態(tài)連接的優(yōu)點:
動態(tài)連接的是一種更為現(xiàn)代的方法,它的可執(zhí)行的文件的體、體積很小。雖然文件的執(zhí)行速度變得很慢,但是動態(tài)連接的可以很 有效的利用磁盤的空間,并且在連接——編輯的時間也縮短了(因為連接的有些工作被放在載入的時候了)。
動態(tài)連接的目的之一是ABI
動態(tài)連接的目的就是把應用程序從它們實用的特定的版本中分離開。取而代之的是我們約定一個一個接口。這個接口保持穩(wěn)定。這個不隨操作系統(tǒng)的版本改變而改變。程序可以調用接口提供的服務,而不必去了解它們呢是咋樣提供服務,以及它們的底層的功能是如何實現(xiàn)的。由于它是介于應用程序以及二進制的函數(shù)二進制的可執(zhí)行文件的接口,所以可以稱它為應用程序二進制接口)