假设有多个共享库链接到一个可执行文件。假设 libaaa.so 引用了一个全局变量aaa
,而 libbbb.so 引用了一个全局变量bbb
。
我的理解是代码通过 GOT 使用偏移量间接访问这些变量。我无法理解 libaaa.so 中的偏移量aaa
和 libbbb.so 中的偏移量如何bbb
设法避免相互冲突。
共享库的代码是如何生成的,以使所有库中的所有引用都以 GOT 中的不同偏移量结束?
我确定我错过了一些愚蠢的东西。
假设有多个共享库链接到一个可执行文件。假设 libaaa.so 引用了一个全局变量aaa
,而 libbbb.so 引用了一个全局变量bbb
。
我的理解是代码通过 GOT 使用偏移量间接访问这些变量。我无法理解 libaaa.so 中的偏移量aaa
和 libbbb.so 中的偏移量如何bbb
设法避免相互冲突。
共享库的代码是如何生成的,以使所有库中的所有引用都以 GOT 中的不同偏移量结束?
我确定我错过了一些愚蠢的东西。