Linker 全局偏移表的作用是什么?
GOT工作的全部原因是代码段和数据段之间的偏移量是恒定的;因此,代码和数据段中某些给定数据之间的偏移量是恒定的 解决此问题,并确认对于库中定义的数据,GOT是冗余的 剩下的唯一可能性是库中使用的数据,但在别处定义 因此,GOT在共享库中的唯一点是能够通过将所有重定位定位到GOT中其他共享库中定义的符号来保持库的代码段位置独立吗 因此,GOT在共享库中的唯一点是能够通过将所有重定位定位到GOT中其他共享库中定义的符号来保持库的代码段位置独立吗 GOT是允许代码重新定位的机制,这一点是正确的 但是,它同时适用于传统的共享对象和程序。由于位置独立代码(PIE)(也称地址空间布局随机化),它适用于程序Linker 全局偏移表的作用是什么?,linker,loader,Linker,Loader,GOT工作的全部原因是代码段和数据段之间的偏移量是恒定的;因此,代码和数据段中某些给定数据之间的偏移量是恒定的 解决此问题,并确认对于库中定义的数据,GOT是冗余的 剩下的唯一可能性是库中使用的数据,但在别处定义 因此,GOT在共享库中的唯一点是能够通过将所有重定位定位到GOT中其他共享库中定义的符号来保持库的代码段位置独立吗 因此,GOT在共享库中的唯一点是能够通过将所有重定位定位到GOT中其他共享库中定义的符号来保持库的代码段位置独立吗 GOT是允许代码重新定位的机制,这一点是正确的 但是,
一般来说,PIE是PIC的一个子集。也就是说,您可以使用
-fPIC
编译所有代码(程序和共享库)。然而,相反的情况是不正确。不能使用-fPIE
编译所有代码(程序和共享库)。共享库需要-fPIC
您忽略了符号插入:。这使得在共享库中访问您自己的全局变量和函数的效率低下,除非您将它们的ELF可见性设置为hidden
。