2017-08-18 32 views
0

我對靜態鏈接有一個很基本的疑問。靜態鏈接重定位地址

假設我們有2個對象碼A和B.目標代碼B包含函數B(),其由A.

稱爲

在第100位置函數B在目標代碼甲現在假設()被調用。

現在將函數B()直接放置在位置100上,還是將它放置在最終對象代碼文件中的某個其他位置,並在第2遍連接期間解析(如函數B()將放置在位置150在最後的對象代碼和函數調用B()將被解析爲150)?

回答

1

鏈接時,鏈接器將把A和B的功能放在內存中合適的位置。然後它會查看A的第100個位置的調用指令,並將B()的地址粘貼到該指令中。

+0

那麼我在問題中說的是正確的? – Zephyr

+0

@Zephyr是的,在你的問題中的第二個選擇是正確的。 – Johan