[英]How does the linker knows which symbol to which one link?
假設我有兩個.cpp文件,其中一個是我寫的
extern int i;
在另一個我定義i變量。
現在鏈接器如何知道在第一個文件中i應該鏈接到第二個文件中的“i”地址? 出現這個問題,因為據我所知,目標文件沒有關於變量名的任何信息(它只知道地址)(參見此鏈接 )。
我真的很困惑。
目標代碼中包含符號定義。 鏈接器使用這些來解析對符號的引用。 符號不是可執行代碼的一部分,並且不能被目標文件中包含的代碼讀取(因此要鏈接到的問題的答案)。
鏈接的可執行文件也可以在其中具有符號(例如,供調試器使用),或者可以在鏈接階段(或之后)刪除符號,因為它們對可執行文件中包含的代碼沒有用處。
一些輕讀: 初學者鏈接指南 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.