將目標程序obj轉(zhuǎn)換成可執(zhí)行文件的程序稱為鏈接程序。
鏈接器是將一個或多個目標文件和必要的庫文件合并成一個完整的可執(zhí)行文件的程序。負責(zé)解析符號引用,處理靜態(tài)和動態(tài)鏈接,最終生成可以在操作系統(tǒng)上運行的可執(zhí)行文件。
鏈接器的主要功能包括符號解析、符號重定位和符號合并。通過符號解析,鏈接器能夠找到目標文件中引用的外部符號的定義;通過符號重定位,鏈接器能夠?qū)⒛繕宋募械姆栆门c其對應(yīng)的定義進行關(guān)聯(lián);通過符號合并,鏈接器能夠消除重復(fù)的符號定義,確保最終生成的可執(zhí)行文件的符號表是唯一的。
鏈接器特點簡述
1、目標文件處理:鏈接器處理由編譯器生成的目標文件(通常是.o文件),這些文件包含程序中各個源文件的編譯結(jié)果。
2、符號解析:鏈接器通過解析目標文件中的符號(例如函數(shù)和變量名),確定它們在哪些目標文件中定義和引用。
3、重定位:對于每個目標文件中引用的符號,鏈接器會在其他目標文件中查找其定義,并調(diào)整相應(yīng)的內(nèi)存地址,以便程序在執(zhí)行時能夠正確地訪問這些符號。
4、合并代碼和數(shù)據(jù):鏈接器將各個目標文件中的代碼和數(shù)據(jù)合并到一個單一的可執(zhí)行文件中,這樣程序在運行時可以訪問這些資源。