1

我很困惑阅读重定位绝对引用、共享库和与位置无关的代码。我假设我对单个进程地址空间还不够了解。

在我的书中,作者谈到了通过插入全局变量/函数的运行时地址来解析绝对符号引用的链接。链接器如何知道这一点?我可以编译、链接、创建我的可执行文件并运行它 N 次不同.. 我猜它不会每次都加载到内存中的同一个地方,所以链接器怎么可能知道绝对运行时地址变量/函数?

4

2 回答 2

1

你说的对。通常,链接器不知道绝对地址并生成所谓的可重定位地址。在一个非常简单的事物模型中,可重定位地址在运行时绑定到绝对地址。

于 2013-06-10T15:43:13.063 回答
1

链接器处理虚拟地址。绝对地址,就是绝对虚拟地址。

每个流程实例都将具有完全相同的虚拟地址空间。

于 2013-06-10T15:45:33.947 回答