簡體   English   中英

鏈接器如何知道哪個符號鏈接到哪個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM