C++ 链接器如何知道哪个符号指向哪个链接?

C++ 链接器如何知道哪个符号指向哪个链接?,c++,linker,loader,C++,Linker,Loader,假设我有两个.cpp文件,我在其中一个文件中编写了 外部国际一级 在另一个例子中,我定义了I变量 现在链接器如何知道在第一个文件中,i应该链接到第二个文件中的“i”地址?出现这个问题,因为据我所知,对象文件没有关于变量名的任何信息(它只知道地址)(请参阅) 我对此很困惑。目标代码中有符号定义。链接器使用这些来解析对符号的引用。这些符号不是可执行代码的一部分,并且不能被包含在目标文件中的代码读取(因此是要链接到的问题的答案) 链接的可执行文件中也可能有符号(例如供调试器使用),或者可能在链接阶段(

假设我有两个.cpp文件,我在其中一个文件中编写了

外部国际一级

在另一个例子中,我定义了I变量

现在链接器如何知道在第一个文件中,i应该链接到第二个文件中的“i”地址?出现这个问题,因为据我所知,对象文件没有关于变量名的任何信息(它只知道地址)(请参阅)


我对此很困惑。

目标代码中有符号定义。链接器使用这些来解析对符号的引用。这些符号不是可执行代码的一部分,并且不能被包含在目标文件中的代码读取(因此是要链接到的问题的答案)


链接的可执行文件中也可能有符号(例如供调试器使用),或者可能在链接阶段(或更高版本)删除符号,因为它们对可执行文件中包含的代码没有任何用处。

目标代码中有符号定义。链接器使用这些来解析对符号的引用。这些符号不是可执行代码的一部分,并且不能被包含在目标文件中的代码读取(因此是要链接到的问题的答案)


链接的可执行文件中也可能包含符号(例如,供调试器使用),或者可能在链接阶段(或更高版本)删除符号,因为它们对可执行文件中包含的代码没有任何用处。

一些轻读:。

一些轻读:。

对象当然知道名称。嗯,符号,符号是由名字决定的,在简单的情况下是1:1的地图。但是,这些符号可能无法到达最终链接表单(即运行时表单)。尽管如此,对于共享库和RTTI,仍然保留了大量符号信息。对象当然知道名称。嗯,符号,符号是由名字决定的,在简单的情况下是1:1的地图。但是,这些符号可能无法到达最终链接表单(即运行时表单)。尽管如此,对于共享库和RTTI,仍然保留了大量符号信息。