最佳答案
链接问题中接受的答案非常简单,只提出了 PIC 和非 PIC 代码之间的不同之处,即生成相对而非绝对的跳转。
当您制作 PIC 代码时,不仅是 代码 与位置无关,它也是数据。并非所有代码或数据都可以简单地通过使用相对偏移量来解决,它必须在加载时(当库/程序加载到内存中时)甚至在运行时解决。
此外,使用相对寻址意味着 CPU 必须将相对偏移量转换为绝对地址,而不是由编译器完成。
在具有虚拟内存的系统上,当编译器可以一劳永逸地完成时,通常不需要在这些相对地址解析上花费加载或运行时间。
关于c++ - 为什么不总是使用 fpic(位置无关代码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332299/