说我有两个.cpp文件,其中一个是我写的
extern int i;
在另一个中我定义了i变量。
现在链接器如何知道在第一个文件中i应该链接到第二个文件中的“i”地址?出现这个问题,因为据我所知,目标文件没有关于变量名的任何信息(它只知道地址)(见this link)。
我真的很困惑。
答案 0 :(得分:2)
目标代码中包含符号定义。链接器使用这些来解析对符号的引用。这些符号不是可执行代码的一部分,并且不能被目标文件中包含的代码读取(因此要链接到的问题的答案)。
链接的可执行文件中也可能包含符号(例如,供调试器使用),或者可能在链接阶段(或更高版本)删除符号,因为它们对可执行文件中包含的代码没用。
答案 1 :(得分:2)