I read this https://stackoverflow.com/questions/5311515/gcc-fpic-option在 PIC 上发帖,似乎使用 PIC 总是好的(无论何时它是 exe/静态/共享库)。
那么有哪些缺点呢?
是否有示例详细说明何时不使用 PIC?
链接问题中接受的答案非常简单,并且只提出了 PIC 和非 PIC 代码之间的一个区别,即生成相对而不是绝对的跳转。
当你制作 PIC 代码时,它不仅仅是code这是与位置无关的,也是与数据无关的。并不是所有的代码或数据都可以简单地通过使用相对偏移量来寻址,它必须在加载时(当库/程序加载到内存中时)甚至在运行时解析。
此外,使用相对寻址意味着 CPU 必须将相对偏移量转换为绝对地址,而不是由编译器完成。
在具有虚拟内存的系统上,当编译器可以一劳永逸地完成这些操作时,通常不需要在这些相对地址解析上花费加载或运行时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)